簡體   English   中英

如何從工廠發出事件

[英]how to emit events from a factory

如何從工廠或服務中發出事件。 我無法將$ scope注入工廠,因此無法發出事件。

我收到以下錯誤 - Unknown provider: $scopeProvider <- $scope

謝謝,穆爾塔扎

注入$ rootScope而不是$ scope,然后在$ rootScope上發出它。

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

工廠無法訪問當前的控制器/指令范圍,因為沒有。 他們確實可以訪問應用程序的根目錄,這就是$ rootScope可用的原因。

您無法將控制器的范圍注入服務。 你能做的是:

  • 將作用域實例作為參數傳遞給您的一個服務函數:

例如

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

   return {
      myFunction: function(scope) {
         scope.$emit(...);
         ...
      }
    };
});
  • 將$ rootScope注入您的服務:

例如

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

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

在你的工廠注入$ rootScope作為 -

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

})
}]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM