$rootScope.$broadcast不会被触发

12 浏览
0 Comments

$rootScope.$broadcast不会被触发

我有以下代码:

Test.html:

测试

TestCtrl.js

 angular.element(document).ready(function () {
  $scope.loadData();                
 });
 $scope.loadData = function () {
  $rootScope.$broadcast("testEvent");               
 }

dtafeed-directive.js

$scope.$on("testEvent", function () {
  console.log('测试广播事件');           
});

有人可以帮我了解吗?

0
0 Comments

问题的原因是在TestCtrl.js中,$scope.loadData函数在angular.element(document).ready中被调用,但是在调用之前就已经定义了,所以在调用时会报错。

解决方法是将$scope.loadData函数的定义放在调用之前。

文章内容如下:

Would you like to try?

Test.html :

<div>Test</div>
<dta-feed my-list="myList"></dta-feed>

TestCtrl.js

 angular.element(document).ready(function () {
  $scope.loadData();                
 });
 $scope.loadData = function () {
  $rootScope.$broadcast("testEvent");               
 }

dtafeed-directive.js

var ev = $rootScope.$on("testEvent", function () {
  console.log('Testing broadcast event');           
});
$scope.$on('$destroy', function () {
    ev();
});

问题的原因是在TestCtrl.js中,$scope.loadData函数在angular.element(document).ready中被调用,但是在调用之前就已经定义了,所以在调用时会报错。

解决方法是将$scope.loadData函数的定义放在调用之前。

0
0 Comments

问题出现的原因:

- 原因是由于使用了$timeout函数,导致$broadcast方法没有被触发。

解决方法:

- 可以使用$timeout函数的回调函数来触发$broadcast方法,代码如下:

$timeout(function(){
    $scope.$broadcast('testEvent');
});

0