【问题标题】:Broadcast listeners aren't set before the broadcast event在广播事件之前未设置广播侦听器
【发布时间】:2016-04-30 11:09:55
【问题描述】:

如果在广播事件之前未设置广播侦听器,谁能给我一些提示?

我已经看到了一些使用 $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

【问题讨论】:

    标签: angularjs events broadcast


    【解决方案1】:

    在你的情况下,你总是会在订阅任何听众之前尝试广播。

    那是因为你 ParentCtrl 总是会在 之前 ChildCtrl 初始化。 试着像构造函数一样监视你的控制器。

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

    【讨论】:

      猜你喜欢
      • 2015-11-04
      • 1970-01-01
      • 2014-09-06
      • 2017-05-04
      • 1970-01-01
      • 1970-01-01
      • 2019-09-14
      • 2023-02-09
      • 1970-01-01
      相关资源
      最近更新 更多