第一次问问。道歉,如果我的行话不是很正确我是angularjs的新手
我有一个controller
,它会获取带有HTTP调用的产品列表
contractManagementControllers.controller('PriceBandsCtrl', ['$scope', '$routeParams', '$http', '$location',
function ($scope, $routeParams, $http, $location)
{
$http.get('products').success(function (products)
{
$scope.productList = products
})
}
我希望能够访问该产品列表的directive
。
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
}
});
我的问题在于事情发生的顺序。控制器功能首先运行,然后是指令链接功能,然后是设置产品列表的回调。因此,$scope.productList
在指令链接函数中未定义,并给出错误
有没有办法强制链接功能等到回调完成?
答案 0 :(得分:1)
将默认值设置为productList
,以便不会收到有关未定义变量的错误
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
});
}
});
答案 1 :(得分:0)
无需等待callback
中的angularjs
。只需将$scope.productList=[];
放入controller as first line
即可。它不会给指令提供undefined。
在您的指令link function
中,只需编写$watch
函数即可观察元素中的更改。