반응형
공장에서 이벤트를 내보내는 방법
공장 또는 서비스에서 이벤트를 내보내려면 어떻게 해야 합니까?$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
반응형
'source' 카테고리의 다른 글
jQuery Masonry와 Ajax 추가 아이템? (0) | 2023.03.08 |
---|---|
angularjs 앱을 어떻게 파괴하죠? (0) | 2023.03.08 |
Spring Boot의 Resources 폴더에서 파일 읽기 (0) | 2023.03.08 |
스코프가 파괴되었을 때 각도 $watch를 제거해야 합니까? (0) | 2023.03.08 |
마크업에서 각도 범위 변수 설정 (0) | 2023.03.08 |