AngularJS에서 $ rootScope. $ broadcast를 사용하는 이유는 무엇입니까?
AngularJS $rootScope.$broadcast
에 대한 몇 가지 기본 정보를 찾으려고 했지만 AngularJS 문서는별로 도움이되지 않습니다. 쉬운 말로 우리는 이것을 왜 사용합니까?
또한 John Papa의 Hot Towel 템플릿에는 다음과 같은 공통 모듈에 사용자 정의 함수가 있습니다 $broadcast
.
function $broadcast() {
return $rootScope.$broadcast.apply($rootScope, arguments);
}
나는 이것이 무엇을하고 있는지 이해하지 못했습니다. 다음은 몇 가지 기본적인 질문입니다.
1) 무엇을 $rootScope.$broadcast
합니까?
2) $rootScope.$broadcast
과 의 차이점은 무엇입니까 $rootScope.$broadcast.apply
?
무엇을
$rootScope.$broadcast
합니까?$rootScope.$broadcast
응용 프로그램 범위를 통해 이벤트를 보내고 있습니다. 해당 앱의 모든 하위 범위는 간단한$scope.$on()
.직계 상위가 아닌 범위 (예 : 상위의 분기)에 도달하려는 경우 이벤트를 보내는 것이 특히 유용합니다.
!!! 하지만 하지 말아야 할 것은
$rootScope.$on
컨트롤러에서 사용 하는 것입니다.$rootScope
컨트롤러가 파괴되면 해당 이벤트 리스너가 계속 존재하고 컨트롤러가 다시 생성 될 때 더 많은 이벤트 리스너가 쌓이게됩니다. (따라서 하나의 방송이 여러 번 잡힐 것입니다).$scope.$on()
대신 사용 하면 리스너도 파괴됩니다.$rootScope.$broadcast
& 의 차이점은 무엇입니까$rootScope.$broadcast.apply
?apply()
특히 지시문 및 기타 JS 라이브러리로 작업 할 때 를 사용해야하는 경우가 있습니다 . 그러나 나는 그 코드 기반을 모르기 때문에 그것이 여기에 해당되는지 알 수 없습니다.
$rootScope
기본적으로 이벤트 리스너 및 디스패처로 작동합니다.
사용 방법에 대한 질문에 답하기 위해 rootScope.$on
;
$rootScope.$broadcast("hi");
$rootScope.$on("hi", function(){
//do something
});
그러나 $rootScope
모든 앱이 $ rootScope에 의존하고 어떤 구성 요소가 어떤 이벤트를 수신하는지 알 수 없기 때문에 자신의 앱의 일반 이벤트 서비스 로 사용하는 것은 좋지 않습니다.
가장 좋은 방법은 듣거나 브로드 캐스트하려는 각 사용자 지정 이벤트에 대한 서비스를 만드는 것입니다.
.service("hiEventService",function($rootScope) {
this.broadcast = function() {$rootScope.$broadcast("hi")}
this.listen = function(callback) {$rootScope.$on("hi",callback)}
})
$ rootScope. $ broadcast 는 모든 자식 범위가 수신 할 수있는 "전역"이벤트를 발생시키는 편리한 방법입니다. $rootScope
모든 하위 범위가 메시지를 수신 할 수 있으므로 메시지를 브로드 캐스트하는 데만 사용 하면됩니다.
루트 범위는 이벤트를 브로드 캐스트합니다.
$rootScope.$broadcast("myEvent");
모든 하위 범위는 이벤트를 수신 할 수 있습니다.
$scope.$on("myEvent",function () {console.log('my event occurred');} );
$ rootScope. $ broadcast를 사용하는 이유는 무엇입니까? 를 사용 $watch
하여 변수 변경을 수신하고 변수 상태가 변경 될 때 함수를 실행할 수 있습니다 . 그러나 경우에 따라 범위 변수 상태의 변경에 관계없이 응용 프로그램의 다른 부분에서 수신 할 수있는 이벤트를 발생시키기 만하면됩니다. 이것이 $broadcast
도움 이 될 때 입니다.
데이터 전달 !!!
콜백 함수 를 사용하여 수신 $broadcast
할을 전달할 수있는 매개 변수 를 받아들이는 사람이 아무도없는 이유가 궁금 합니다.Object
$on
예:
// the object to transfert
var myObject = {
status : 10
}
$rootScope.$broadcast('status_updated', myObject);
$rootScope.$on('status_updated', function(event, obj){
console.log(obj.status); // 10
})
$ rootScope. $ broadcast는 무엇을합니까?
앵귤러 앱 전체의 각 리스너에게 메시지를 브로드 캐스트합니다. 이는 서로 다른 계층 적 수준 (부모, 자식 또는 형제)의 범위로 메시지를 전송하는 매우 강력한 수단입니다.
Similarly, we have $rootScope.$emit, the only difference is the former is also caught by $scope.$on while the latter is caught by only $rootScope.$on .
refer for examples :- http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
참고URL : https://stackoverflow.com/questions/24830679/why-do-we-use-rootscope-broadcast-in-angularjs
'code' 카테고리의 다른 글
자바 날짜를 한 시간 뒤로 변경 (0) | 2020.08.14 |
---|---|
JavaScript를 사용하여 스타일 -webkit-transform을 동적으로 설정하는 방법은 무엇입니까? (0) | 2020.08.14 |
포스트 빌드가 코드 1로 종료되었습니다. (0) | 2020.08.14 |
두 목록의 차이점 (0) | 2020.08.14 |
기본 편집기로서의 숭고함 (0) | 2020.08.14 |