gpt4 book ai didi

javascript - Angularjs:我可以在 Controller API 回调后运行我的指令吗

转载 作者:行者123 更新时间:2023-12-03 12:28:07 26 4
gpt4 key购买 nike

第一次提问。如果我的行话不太正确,我很抱歉,我是 angularjs 的新手

我有一个 Controller ,它通过 HTTP 调用获取产品列表

contractManagementControllers.controller('PriceBandsCtrl', ['$scope', '$routeParams',     '$http', '$location',
function ($scope, $routeParams, $http, $location)
{
$http.get('products').success(function (products)
{
$scope.productList = products
})
}

还有一个我想访问该产品列表的指令

contractManagementControllers.directive("priceBands",function($http)
{
return {
scope: true,
restrict: 'AE',
replace: 'true',
templateUrl: 'Partials/PriceBand.html',
link: function ($scope, ele, attrs, c)
{
// use $scope.productList
}
});

我的问题在于事情发生的顺序。首先运行 Controller 函数,然后是指令链接函数,最后是设置产品列表的回调函数。因此 $scope.productList 在指令链接函数中未定义并给出错误

有没有办法强制链接函数等待回调完成?

最佳答案

将默认值设置为productList,以免出现有关 undefined variable 的错误

contractManagementControllers.controller('PriceBandsCtrl', ['$scope', '$routeParams',     '$http', '$location',
function ($scope, $routeParams, $http, $location)
{
$scope.productList = [];
$http.get('products').success(function (products)
{
$scope.productList = products
})
}

然后观察指令中productList的变化:

contractManagementControllers.directive("priceBands",function($http)
{
return {
scope: true,
restrict: 'AE',
replace: 'true',
templateUrl: 'Partials/PriceBand.html',
link: function ($scope, ele, attrs, c)
{
$scope.watch('productList', function(newValue, oldValue) {
//Perform here if you need
});
}
});

关于javascript - Angularjs:我可以在 Controller API 回调后运行我的指令吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24081381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com