code

AngularJS에서 $ rootScope. $ broadcast를 사용하는 이유는 무엇입니까?

codestyles 2020. 8. 14. 07:45
반응형

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?


  1. 무엇을 $rootScope.$broadcast합니까?

    $rootScope.$broadcast응용 프로그램 범위를 통해 이벤트를 보내고 있습니다. 해당 앱의 모든 하위 범위는 간단한 $scope.$on().

    직계 상위가 아닌 범위 (예 : 상위의 분기)에 도달하려는 경우 이벤트를 보내는 것이 특히 유용합니다.

    !!! 하지만 하지 말아야 할 것은 $rootScope.$on컨트롤러에서 사용 하는 것입니다. $rootScope컨트롤러가 파괴되면 해당 이벤트 리스너가 계속 존재하고 컨트롤러가 다시 생성 될 때 더 많은 이벤트 리스너가 쌓이게됩니다. (따라서 하나의 방송이 여러 번 잡힐 것입니다). $scope.$on()대신 사용 하면 리스너도 파괴됩니다.

  2. $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

반응형