繁体   English   中英

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

[英]How to ensure a promise.then(func) has run before in another controller?

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

处理依赖关系的通常方法是对正在等待的变量使用$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
        });
    }
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM