반응형
각진 서비스에서는 어떻게 $on을 사용할 수 있습니까?
컨트롤러가 $on 청취자를 사용하도록 할 수 있었습니다.$scope.$on.
이벤트를 듣기 위한 서비스 제공 방법에 대한 문서가 없습니다.
나는 노력했다.$rootScope.$on단, 1명의 청취자만 허용됩니다.부모 컨트롤러가 범위 내에 있는지 여부에 관계없이 여러 서비스에 청취자가 참여하도록 하겠습니다.
꽤 실험해 본 결과, 최소한의 코드로 이벤트를 서비스에 가져올 수 있음이 밝혀졌습니다.
샘플 서비스 코드는, 다른 사람이 이것에 부딪칠 경우를 위해서 계속됩니다.
샘플은 해당 브로드캐스트를 수신하면 로컬 스토리지에 서비스 모델을 저장하고 복원합니다.
app.factory('userService', ['$rootScope', function ($rootScope) {
var service = {
model: {
name: '',
email: ''
},
SaveState: function () {
sessionStorage.userService = angular.toJson(service.model);
},
RestoreState: function () {
service.model = angular.fromJson(sessionStorage.userService);
}
}
$rootScope.$on("savestate", service.SaveState);
$rootScope.$on("restorestate", service.RestoreState);
return service;
}]);
부터$on는 스코프 방식입니다.서비스 내에서 스코프를 작성한 후 그 위에서 이벤트를 리슨할 수 있습니다.
app.factory('myService', function($rootScope) {
var scope = $rootScope.$new(); // or $new(true) if you want an isolate scope
scope.$on('testEvent', function() {
console.log('event received');
})
return {}
});
function MyCtrl($scope, myService, $rootScope) {
$rootScope.$broadcast('testEvent');
}
단, 스코프는 보통 서비스와 관련되어 있지 않기 때문에 이 접근방식은 권장하지 않습니다.
언급URL : https://stackoverflow.com/questions/16477123/how-do-i-use-on-in-a-service-in-angular
반응형
'programing' 카테고리의 다른 글
| 호출 후 angularjs에서 $watch 바인딩 해제 (0) | 2023.03.05 |
|---|---|
| Angular 식에서 문자열에서 Int로 해석하려면 어떻게 해야 합니까? (0) | 2023.03.05 |
| SQLPLUS를 사용하여 CSV 형식의 파일로 스풀하려면 어떻게 해야 합니까? (0) | 2023.02.28 |
| Angular를 사용하는 로그인 화면이 있는SPA의 예JS 및 ASP에 접속합니다.NET Web API 2? (0) | 2023.02.28 |
| ORA-28040: 일치하는 인증 프로토콜 예외 없음 (0) | 2023.02.28 |