2016-04-30 158 views
4

任何人都可以給我當廣播監聽廣播事件之前沒有設置如何處理這種情況的一些技巧之前設置?廣播聽衆不是廣播事件

我已經看到了$超時了一些解決方案,但他們不覺得OK。謝謝!

var app = angular.module('app', []); 

app.controller('ParentCtrl', 
    function ParentCtrl ($scope) { 
    this.data = 'parent'; 
    $scope.$broadcast('parent', 'Some data'); // event is sent before any listeners are set 
}); 

app.controller('ChildCtrl', 
    function SiblingOneCtrl ($scope) { 
    this.data = 'child'; 
    $scope.$on('parent', function (event, data) { 
     document.write(data); // never activates 
    }); 
}); 

工作例如: http://codepen.io/AndriusRimkus/pen/zqMONm

回答

1

在你的情況,你會總是試圖播放任何監聽器將訂閱之前。

這是因爲你ParentCtrl將始終初始化之前ChildCtrl。 嘗試觀看你的控制器像一個構造函數。

如果您有什麼廣播東西給你的孩子控制器,那麼你需要有一些事件(例如,點擊次數)來啓動手動播放,但不能直接從控制器。