javascript - 有没有办法以 Angular 方式从父 Controller 向子 Controller 发送 promise ?

标签 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() {
    }

}

我需要子 Controller 等待父 Controller 初始化完成。

我正在考虑使用

$scope.broadcast();

但是总是存在竞争条件的可能性,具体取决于 somePromise 需要多长时间。

有没有办法将 Promise 从父 Controller 传递到子 Controller ?

最佳答案

也许不是您想要实现的目标,但我相信您可以使用 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
    }
})

关于javascript - 有没有办法以 Angular 方式从父 Controller 向子 Controller 发送 promise ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41641900/

相关文章:

javascript - 如何创建具有特定范围的随机数组

javascript - 如何在一个函数中抛出错误以被另一个函数捕获?

javascript - Ionic/Angular 混合应用程序,让摇动事件起作用的问题

javascript - 第一个日期是第二个日期的 minDate

javascript - 从 Angularjs 中的 Controller 获取元素 id

angularjs - 带有 Angular 前端的 Web Api OAuth - 无法处理 302 重定向

javascript - 移动网站上的变色(平衡)背景图片

javascript - Sequelize - 在 SQL 中使用 2 个地址作为外键的用户模型

javascript - 将数组值传递给js

javascript - 刷新页面之前调用函数