如何從工廠或服務發出事件。我無法將$範圍注入工廠,因此無法發出事件。如何從工廠發出事件
我碰到下面的錯誤 - Unknown provider: $scopeProvider <- $scope
感謝, 穆爾塔扎
如何從工廠或服務發出事件。我無法將$範圍注入工廠,因此無法發出事件。如何從工廠發出事件
我碰到下面的錯誤 - Unknown provider: $scopeProvider <- $scope
感謝, 穆爾塔扎
您不能將控制器的作用域注入到服務中。你可以做的是:
例如
app.factory('MyService', function() {
return {
myFunction: function(scope) {
scope.$emit(...);
...
}
};
});
例如
app.factory('MyService', ['$rootScope', function($rootScope) {
return {
myFunction: function() {
$rootScope.$emit(...);
...
}
};
}]);
進樣$ rootScope而不是$範圍,然後發射它的$ rootScope。
myApp.factory('myFactory', ['$rootScope', function ($rootScope) {
$rootScope.$emit("myEvent", myEventParams);
}]);
工廠沒有權限訪問當前控制器/指令範圍,因爲沒有一個。他們確實可以訪問應用程序的根目錄,這就是$ rootScope可用的原因。
+ 1爲答案 – murtaza52
這是正確的答案,工廠不得依賴控制器,因爲他們的生命週期完全不同。 –
在你的工廠注入$ rootScope原樣
myApp.factory('myFactory',function($rootScope){
return({
// use $rootScope as below to pass myEventParams to all below in hierarchy
$rootScope.$broadcast("myEvent",myEventParams);
})
}]);
我真的不理解投票沒有給出適當的理由就沒有用的答案。非常不專業。 –
那麼你的答案基本上是5年前答案的副本,並且不會添加任何內容,同時也比兩個現有的已接受答案不太清晰。你認爲你添加了哪些信息? – toxaq
爲什麼不看在控制器(S),而不是發射事件服務變量? –
@AndersBornholm每個消化週期都會觸發角度的手錶功能。根據應用程序的不同,摘要循環可能會經常發生。 Pubsub提供更好的溝通渠道。它不需要評估每個摘要週期。 – kitimenpolku