从工厂传播范围事件

时间:2018-12-28 06:39:17

标签: angularjs angularjs-factory angularjs-rootscope

$ rootScope。$ broadcast或$ rootScope。$ emit都不在我的工厂工作

我有$rootScope已注入工厂。工厂返回此函数:

alertHook: function() {
  $rootScope.$broadcast('getRollups', 'finally');
}

我将该工厂注入指令中,并调用alertHook()函数。

我正在像这样监听getRollups

$scope.$on( 'getRollups', function( evt, args ) {
    console.log( args );
  });

瞧瞧,什么都没有记录到控制台。我还尝试了$ emit而不是$ broadcast。

在我发疯之前请帮助:)

1 个答案:

答案 0 :(得分:1)

在工厂中使用$rootScope.$broadcast

angular.module("app",[])
.factory("factory", function($rootScope) {
   return { broadcast: broadcast };
   function broadcast () {
      $rootScope.$broadcast("myEvent","from factory")
   }
})
.controller("ctrl",function($scope,factory) {
  $scope.$on("myEvent", function(ev,args) {
    console.log(ev.name,args);
  });
  $scope.clickMe = function() {
    factory.broadcast();
  };
})
<script src="//unpkg.com/angular/angular.js"></script>
<body ng-app="app" ng-controller="ctrl">
  <button ng-click="clickMe()">Click me</button>
</body>

有关更多信息,请参见