有没有办法从父控制器向角度控制器发送一个承诺?

时间:2017-01-13 19:16:58

标签: javascript angularjs

这是我的parentController.js

angular
    .module('myApp')
    .controller('parentController', parentController);

parentController.$inject = [];

function parentController() {

    init();

    function init() {
        return somePromise();
    }

}

这是我的childController.js

angular
    .module('myApp')
    .controller('childController', childController);

childController.$inject = [];

function childController() {

    init();

    // need to wait for parentController init to finish
    function init() {
    }

}

我需要子控制器等待父控制器初始化。

我在考虑使用

$scope.broadcast();

但是,根据somePromise需要多长时间,总是存在竞争条件的可能性。

有没有办法将承诺从父控制器传递到子控制器?

2 个答案:

答案 0 :(得分:0)

可能不是您想要实现的目标,但我相信您可以使用resolve属性解决此问题,如下所示:

.state('app.parent', {
    url: 'parent/',
    views: ...,
    resolve: {
        item: function() {
            return somePromise();
        }
    },
    controller: function(item) {
        item
    }
})

.state('app.parent.child', {
    url: 'child',
    views: ...,
    resolve: {
        itemChild: function(item) {
            //Do something in case is nedeed
            return item;
        }
    },
    controller: function(itemChild) {
        itemChild
    }
})

答案 1 :(得分:0)

查看 angular-ui-router ,如声明的解决方案可能会有所帮助