这是我的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/