如何确保promise.then(func)之前在另一个控制器中运行?

时间:2013-10-29 03:32:41

标签: angularjs restangular

我在控制器A中有一个Restangular函数需要设置一个在控制器B中使用的$rootScope变量。如何在控制器B初始化之前确保Restangular函数运行,或者在那里另一种处理这个问题的方法?感谢。

1 个答案:

答案 0 :(得分:1)

处理依赖关系的常用方法是对您正在等待的变量使用$scope.$watch,并让其他代码在回调中做出响应。

$scope.$watch(function() {
    return $rootScope.resultFromControllerA
}, function(result) {
    if (result) {

        // Configure Controller B
    }
})

编辑,只是为了添加,因为您建议它是一个承诺,只需在根作用域上设置承诺并让其他控制器附加到它:

控制器A

$rootScope.controllerASetupPromise = Restangular.get()

控制器B

$scope.$watch(function() {
    return $rootScope.controllerASetupPromise
}, function(thePromise) {
    if (thePromise) {

        thePromise.then(function(response) {

            // Configure Controller B
        });
    }
})