Распространение событий от фабрики - PullRequest
0 голосов
/ 28 декабря 2018

Ни $ 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 голосов
/ 28 декабря 2018

При использовании на фабриках $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>

Для получения дополнительной информации см.

...