广播事件

时间:2016-04-30 11:09:56

标签: 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 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 个答案:

答案 0 :(得分:1)

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

那是因为您ParentCtrl将始终在 ChildCtrl之前初始化。 尝试像控制器一样监视控制器。

如果您要向儿童控制器广播内容,那么您需要有一些事件(如点击)来手动开始广播,而不是直接从控制器广播。