AngularJs $ emit和$ broadcast和$ on issue

时间:2014-09-11 10:15:32

标签: javascript angularjs

试图了解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'
  });

});

Fiddle Demo

1 个答案:

答案 0 :(得分:1)

除了在子控制器有机会实例化之前发生广播之外,代码没有什么问题。根据{{​​3}}

使用超时
setTimeout(function() {
  $scope.$broadcast(...
}, 1000);