Как испускать события из factory
Как я могу испускать события из factory или службы. Я не могу вставить $scope в factory, поэтому не могу испускать события.
Я получаю следующую ошибку: Unknown provider: $scopeProvider <- $scope
Спасибо,
Муртаза
Ответы
Ответ 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);
})
}]);