Подтвердить что ты не робот

Как испускать события из factory

Как я могу испускать события из factory или службы. Я не могу вставить $scope в factory, поэтому не могу испускать события.

Я получаю следующую ошибку: Unknown provider: $scopeProvider <- $scope

Спасибо, Муртаза

4b9b3361

Ответ 1

Вы не можете вводить область управления в службу. Что вы можете сделать, это:

  • передать экземпляр области действия в качестве параметра одной из ваших служебных функций:

например.

app.factory('MyService', function() {

   return {
      myFunction: function(scope) {
         scope.$emit(...);
         ...
      }
    };
});
  • введите $rootScope в вашу службу:

например.

app.factory('MyService', ['$rootScope', function($rootScope) {

   return {
      myFunction: function() {
         $rootScope.$emit(...);
         ...
      }
    };
}]);

Ответ 2

Внесите $rootScope вместо $scope, а затем испустите его на $rootScope.

myApp.factory('myFactory', ['$rootScope', function ($rootScope) {
    $rootScope.$emit("myEvent", myEventParams);
}]);

Фабрики не имеют доступа к текущей области управления/директивы, потому что их нет. У них есть доступ к корню приложения, хотя и для чего доступен $rootScope.

Ответ 3

В вашем factory введите $rootScope as -

myApp.factory('myFactory',function($rootScope){
return({
// use $rootScope as below to pass myEventParams to all below in hierarchy
$rootScope.$broadcast("myEvent",myEventParams);

})
}]);