> 웹 프론트엔드 > JS 튜토리얼 > `$scope.$emit` 및 `$scope.$on`은 AngularJS에서 이벤트 통신을 어떻게 촉진합니까?

`$scope.$emit` 및 `$scope.$on`은 AngularJS에서 이벤트 통신을 어떻게 촉진합니까?

Susan Sarandon
풀어 주다: 2024-12-21 00:24:09
원래의
565명이 탐색했습니다.

How Do `$scope.$emit` and `$scope.$on` Facilitate Event Communication in AngularJS?

AngularJS의 이벤트 통신을 위한 $scope.$emit 및 $scope.$on 이해

AngularJS는 $를 사용하여 유연한 이벤트 통신 메커니즘을 제공합니다. scope.$emit 및 $scope.$on 메소드. 이러한 방법은 컨트롤러 간 데이터 전송을 촉진하여 반응성이 뛰어나고 동적인 애플리케이션을 구축할 수 있게 해줍니다.

원래 게시물에서 언급했듯이 문제는 $emit 및 $on 작동 방식에 대한 오해에서 비롯됩니다. 핵심은 부모-자식 범위 관계의 개념을 이해하는 데 있습니다.

부모-자식 범위 관계

AngularJS에서 범위는 트리와 같은 계층 구조로 구성됩니다. 여기서 각 범위는 다른 범위의 상위 또는 하위입니다. 이 관계는 범위 계층 구조를 통해 이벤트가 전파되는 방식을 결정합니다.

이벤트 내보내기

AngularJS에서 이벤트를 내보내는 두 가지 주요 방법은 $broadcast와 $emit입니다.

  • $broadcast: 방송 이벤트를 현재 범위 계층 구조의 모든 하위 범위로 하향 전파합니다.
  • $emit: 이벤트를 범위 계층 구조를 통해 위쪽으로 전파하여 상위 범위에 도달합니다.

이벤트 듣기

이벤트를 들으려면 $on 메소드. 이벤트 이름과 이벤트가 트리거될 때 실행될 콜백 함수라는 두 가지 매개변수를 사용합니다.

$emit 및 $on 사용 시나리오

기반 귀하의 예와 상위-하위 범위 관계의 개념에 대해 가능한 시나리오는 다음과 같습니다.

시나리오 1: 상위-하위 관계

firstCtrl의 범위가 secondCtrl 범위의 상위인 경우 예제의 코드는 firstCtrl:

function firstCtrl($scope) {
  $scope.$broadcast('someEvent', [1, 2, 3]);
}

function secondCtrl($scope) {
  $scope.$on('someEvent', function(event, mass) { console.log(mass); });
}
로그인 후 복사

시나리오 2: 부모-자식 없음 관계

범위 사이에 상위-하위 관계가 없는 경우 $rootScope를 컨트롤러에 삽입하고 secondCtrl:

function firstCtrl($rootScope) {
  $rootScope.$broadcast('someEvent', [1, 2, 3]);
}
로그인 후 복사
시나리오 3: 하위에서 하위로 방출 상위

마지막으로 하위 컨트롤러에서 범위를 위쪽으로 이벤트를 전달해야 하는 경우 $scope.$emit를 사용할 수 있습니다. firstCtrl 범위가 secondCtrl 범위의 상위인 경우:

상위-하위 범위 관계와 $emit 및 $on 작동 방식을 이해함으로써 이벤트를 효과적으로 활용하여 컨트롤러 간 통신을 설정할 수 있습니다. AngularJS 애플리케이션.
function firstCtrl($scope) {
  $scope.$on('someEvent', function(event, data) { console.log(data); });
}

function secondCtrl($scope) {
  $scope.$emit('someEvent', [1, 2, 3]);
}
로그인 후 복사

위 내용은 `$scope.$emit` 및 `$scope.$on`은 AngularJS에서 이벤트 통신을 어떻게 촉진합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿