source

공장에서 이벤트를 내보내는 방법

lovecheck 2023. 3. 8. 21:17
반응형

공장에서 이벤트를 내보내는 방법

공장 또는 서비스에서 이벤트를 내보내려면 어떻게 해야 합니까?$scope를 공장에 투입할 수 없기 때문에 이벤트를 내보낼 수 없습니다.

다음의 에러가 표시됩니다.Unknown provider: $scopeProvider <- $scope

고마워, 무르타자

$scope 대신 $rootScope를 삽입한 후 $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);

})
}]);

언급URL : https://stackoverflow.com/questions/14056874/how-to-emit-events-from-a-factory

반응형