ホームページ > ウェブフロントエンド > jsチュートリアル > `$scope.$emit` と `$scope.$on` はどのようにして AngularJS のコントローラー間通信を促進しますか?

`$scope.$emit` と `$scope.$on` はどのようにして AngularJS のコントローラー間通信を促進しますか?

Linda Hamilton
リリース: 2024-12-07 11:59:12
オリジナル
288 人が閲覧しました

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: 特定の名前のイベントをリッスンし、イベントがトリガーされたときにコールバック関数を実行します。

親子スコープ関係が重要

これらのメソッドの有効性は、関係するコントローラーのスコープ間の親子関係。 2 種類のイベント ディスパッチが利用可能です:

  • $scope.$broadcast: すべての子スコープにイベントを下向きにディスパッチします。
  • $scope。 $emit: スコープを通じてイベントを上向きにディスパッチします階層。

シナリオ例

1.スコープの親子関係:

最初のコントローラー ($scope.$emit) のスコープが 2 番目のコントローラー ($scope.$on) の親である場合、次のコードは機能します。

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

function secondCtrl($scope) {
    $scope.$on('someEvent', function(event, mass) {
        console.log(mass);
    });
}
ログイン後にコピー

2.親子関係がないスコープ:

親子関係がない場合は、$rootScope をコントローラーに挿入し、すべての子スコープにイベントをブロードキャストできます:

function firstCtrl($rootScope) {
    $rootScope.$broadcast('someEvent', [1, 2, 3]);
}
ログイン後にコピー

3.子から親へのディスパッチ:

子コントローラーから親コントローラーにイベントをディスパッチするには、$scope.$emit を使用します。最初のコントローラー ($scope.$on) のスコープが 2 番目のコントローラー ($scope.$emit) の親である場合:

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 work では、AngularJS アプリケーションのコントローラー間で効果的に通信できます。

以上が`$scope.$emit` と `$scope.$on` はどのようにして AngularJS のコントローラー間通信を促進しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート