首頁 >web前端 >js教程 >`$scope.$emit` 和 `$scope.$on` 如何促進 AngularJS 中的控制器間通訊?

`$scope.$emit` 和 `$scope.$on` 如何促進 AngularJS 中的控制器間通訊?

Linda Hamilton
Linda Hamilton原創
2024-12-07 11:59:12250瀏覽

How Do `$scope.$emit` and `$scope.$on` Facilitate Inter-Controller Communication in AngularJS?

使用$scope.$emit 和$scope.$on

在AngularJS 中,可以使用$scope 來實現控制器之間的通信.$emit 和$scope.$on 方法。這些方法促進基於事件的通信,允許資料或訊號從一個控制器廣播到另一個控制器。

$scope.$emit 和 $scope.$on:解釋

  • $scope.$emit:發出一個透過範圍向上傳播的事件hierarchy.
  • $scope.$on: 監聽特定名稱的事件,並在事件觸發時執行回調函數。

親子範圍關係很重要

這些方法的有效性取決於父子之間的關係所涉及的控制者的範圍。有兩種類型的事件調度可用:

  • $scope.$broadcast: 將事件向下調度到所有子範圍。
  • $scope。 $emit: 透過作用域向上調度事件

範例場景

1.父子作用域關係:

1.父子作用域關係:

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

function secondCtrl($scope) {
    $scope.$on('someEvent', function(event, mass) {
        console.log(mass);
    });
}

如果第一個控制器($scope.$emit) 的作用域是第二個控制器($scope.$on) 的父級,則下列程式碼應該有效:

2。無父子作用域關係:

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

如果沒有父子作用域,可以將$rootScope 注入控制器,並將事件廣播到所有子作用域:

3.從子控制器分派到父控制器:

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) 的範圍是第二個控制器($scope.$emit) 的父級:

透過了解$scope.$emit 和$ scope. $on work,您可以在AngularJS 應用程式中的控制器之間進行有效的通訊。

以上是`$scope.$emit` 和 `$scope.$on` 如何促進 AngularJS 中的控制器間通訊?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn