$ http请求子控制器的父级

时间:2015-05-08 00:01:09

标签: javascript angularjs

我的父母和子控制器中有一个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。

1 个答案:

答案 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
})