2017-01-13 49 views
1

這裏是我的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需要多長時間一直存在的競爭條件的可能性。

有沒有辦法將父母控制器中的承諾傳遞給子控制器?

+0

您是否使用$ stateprovider? –

回答

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 
    } 
}) 
0

退房角UI路由器狀指出解決可能能夠幫助

相關問題