试图了解angularjs的$ emit和$ broadcast以及$ on事件,理解了理论部分。但无法理解实际的事情。
请看看这个, 为什么我没有收到console.log消息
HTML
<div ng-app="demo">
<div ng-controller="ParentCtrl as parent" class="ng-scope">
{{ parent.data }}
<div ng-controller="SiblingOneCtrl as sib1" class="ng-scope">
{{ sib1.data }}
</div>
</div>
</div>
JS
var app = angular.module('demo', []);
app.controller('ParentCtrl',function($scope) {
$scope.$broadcast('parent', 'Some data'); // going down!
});
app.controller('SiblingOneCtrl',function($scope) {
$scope.$on('parent', function (event, data) {
console.log(data); // 'Some data'
});
});
答案 0 :(得分:1)
除了在子控制器有机会实例化之前发生广播之外,代码没有什么问题。根据{{3}}
使用超时setTimeout(function() {
$scope.$broadcast(...
}, 1000);