如何从工厂或服务发出事件。我无法将$ scope注入工厂,因此无法发出事件。
我收到以下错误 - Unknown provider: $scopeProvider <- $scope
谢谢, 穆尔塔扎
答案 0 :(得分:56)
注入$ rootScope而不是$ scope,然后在$ rootScope上发出它。
myApp.factory('myFactory', ['$rootScope', function ($rootScope) {
$rootScope.$emit("myEvent", myEventParams);
}]);
工厂无法访问当前的控制器/指令范围,因为没有。他们确实可以访问应用程序的根目录,这就是$ rootScope可用的原因。
答案 1 :(得分:55)
您无法将控制器的范围注入服务。你能做的是:
e.g。
app.factory('MyService', function() {
return {
myFunction: function(scope) {
scope.$emit(...);
...
}
};
});
e.g。
app.factory('MyService', ['$rootScope', function($rootScope) {
return {
myFunction: function() {
$rootScope.$emit(...);
...
}
};
}]);
答案 2 :(得分:0)
在您的工厂中,将$ rootScope注入 -
myApp.factory('myFactory',function($rootScope){
return({
// use $rootScope as below to pass myEventParams to all below in hierarchy
$rootScope.$broadcast("myEvent",myEventParams);
})
}]);