我的父母和子控制器中有一个HTTP请求:
家长控制器
//Product is a $resource object that return http request as a promise.
Product.getItem()
.then(function(items) {
//assign to the scope
$scope.items = items
})
儿童控制器
console.log($scope.items) <---get undefined.
我知道它是未定义的,因为在页面首次加载时尚未进行HTTP请求,但我不确定如何解决子控制器中的promise。
答案 0 :(得分:3)
有两种方法可以解决这个问题
你可以使用听众
function checkInit(scopeName, cb){
var listener = $scope.$watch(scopeName, function(new, old){
if (typeof new !== 'undefined'){
cb();
listener(); //deregister event listener
}
})
}
对它有一点功能并使用它
checkInit('items', function(){
//whatever you like
});
方法2 - 建议用于$ http服务
您可以在父母
中使用承诺风格类似的东西$scope.items = Product.getItem();
这将返回一个承诺,您可以在父母或子女或两者中使用
$scope.items.then(function(response){
//whatever you like
})