programing

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

sourcejob 2023. 4. 4. 21:14
반응형

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

Angular에 대한 몇 가지 기본 정보를 찾으려고 했다.JS$rootScope.$broadcast, 그러나 Angular는JS 설명서는 별로 도움이 되지 않습니다.쉽게 말하면 이걸 왜 쓰죠?

또한 John Papa의 핫타월 템플릿에는 커스텀 기능이 있습니다.$broadcast:

function $broadcast() {
    return $rootScope.$broadcast.apply($rootScope, arguments);
}

나는 이것이 무엇을 하는지 이해하지 못했다.다음은 기본적인 질문 몇 가지입니다.

1) 기능$rootScope.$broadcast할 수 있을까?

2) 의 차이는 무엇입니까?$rootScope.$broadcast그리고.$rootScope.$broadcast.apply?

$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)}
})
  1. 무엇인가.$rootScope.$broadcast할 수 있을까?

    $rootScope.$broadcast응용 프로그램 범위를 통해 이벤트를 전송합니다.이 앱의 모든 어린이 범위는 다음과 같은 간단한 방법으로 잡을 수 있습니다.$scope.$on().

    직접 부모가 아닌 범위(예를 들어 부모의 분기)에 도달하려면 이벤트를 보내는 것이 특히 유용합니다.

    !!! 단, 하지 말아야 할 한 가지입니다.$rootScope.$on컨트롤러로부터 송신됩니다. $rootScope는 어플리케이션입니다.컨트롤러가 파괴되어도 이벤트청취자는 계속 존재하며 컨트롤러가 다시 생성되면 이벤트청취자는 더 많아집니다(따라서 1개의 브로드캐스트가 여러 번 포착됩니다).사용하다$scope.$on()듣는 사람도 파괴될 수 있어요.

  2. 와의 차이는 무엇입니까?$rootScope.$broadcast&$rootScope.$broadcast.apply?

    때때로 당신은 그것을 사용해야 한다.apply()특히 디렉티브 및 기타 JS 라이브러리로 작업할 때는 더욱 그렇습니다.하지만 나는 그 코드 베이스를 모르기 때문에, 여기에서는 그것이 사실인지 아닌지는 알 수 없다.

$rootScope($rootScope 。$syslog는 모든 아동 스코프가 들을 수 있는 "글로벌" 이벤트를 발생시키는 편리한 방법입니다.사용만 하면 됩니다.$rootScope모든 하위 스코프가 메시지를 수신할 수 있으므로 메시지를 브로드캐스트합니다.

루트 스코프는 이벤트를 브로드캐스트합니다.

$rootScope.$broadcast("myEvent");

모든 하위 스코프가 이벤트를 수신할 수 있습니다.

$scope.$on("myEvent",function () {console.log('my event occurred');} );

$rootScope를 사용하는 이유$140?사용할 수 있습니다.$watch변수 변경이 있는지 확인하고 변수 상태가 변경되었을 때 함수를 실행합니다.그러나 범위 변수 상태의 변경에 관계없이 응용 프로그램의 다른 부분이 수신할 수 있는 이벤트를 발생시킬 수 있습니다.가 바로 때 this this this this $broadcast도움이 됩니다.

데이터 전송 중!!!

도 그 말을 .$broadcast할 수 있는 .Object

예:

// the object to transfert
var obj = {
    status : 10
}

$rootScope.$broadcast('status_updated', obj);
$scope.$on('status_updated', function(event, obj){
    console.log(obj.status); // 10
})

$rootScope란?$140이면 될까요?

메시지를 앵귤러 앱 전체에 걸쳐 각 청취자에게 브로드캐스트합니다.이것은 메시지를 다른 계층 수준(부모, 자녀 또는 형제자매)의 스코프로 전송하는 매우 강력한 수단입니다.

마찬가지로 $rootScope도 있습니다.유일한 차이점은 전자도 $190로 잡혔다는 것입니다.$on, 후자는 $rootScope에 의해서만 포착됩니다.$on.

예에 대해서는, 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

반응형