2016-04-30 160 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。 尝试观看你的控制器像一个构造函数。

如果您有什么广播东西给你的孩子控制器,那么你需要有一些事件(例如,点击次数)来启动手动播放,但不能直接从控制器。