Angularjs 广播听众不是';t在广播活动之前设置

Angularjs 广播听众不是';t在广播活动之前设置,angularjs,events,broadcast,Angularjs,Events,Broadcast,有谁能给我一些关于如何处理广播活动前没有设置广播听众的情况的建议吗 我见过一些带有$timeout的解决方案,但它们感觉不太好。谢谢 var app = angular.module('app', []); app.controller('ParentCtrl', function ParentCtrl ($scope) { this.data = 'parent'; $scope.$broadcast('parent', 'Some data'); // event is

有谁能给我一些关于如何处理广播活动前没有设置广播听众的情况的建议吗

我见过一些带有$timeout的解决方案,但它们感觉不太好。谢谢

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
    });
});
工作示例:

在您的情况下,您将始终尝试在订阅任何侦听器之前进行广播

这是因为您的
ParentCtrl
总是在
ChildCtrl
之前初始化。 试着像一个构造器一样监视你的控制器

若您想向您的子控制器广播什么,那个么您需要一些事件(比如,单击)来手动开始广播,而不是直接从控制器开始广播