在广播事件之前没有设置广播监听器时,有人可以给我一些关于如何处理这种情况的提示吗?
我已经看到了一些$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
最佳答案 在您的情况下,您将始终尝试在任何听众订阅之前进行广播.
那是因为您的ParentCtrl将始终在ChildCtrl之前初始化.
尝试像控制器那样监视控制器.
如果您要向您的子控制器广播内容,那么您需要有一些事件(如点击)来手动开始广播,而不是直接从控制器开始.