我的父控制器和子控制器中有一个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。
有两种方法可以解决这个问题
你可以使用一个监听器
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服务
您可以在父母中使用promise风格的东西
$scope.items = Product.getItem();
这将返回一个诺言,您可以在您的父母或孩子或两者中同时使用
$scope.items.then(function(response){
//whatever you like
})
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句