1. ホーム
  2. angularjs

[解決済み] AngularJSで$rootScope.$broadcastを使う理由とは?

2022-09-29 23:05:53

質問

AngularJSの基本的な情報を探してみました。 $rootScope.$broadcast しかし、AngularJSのドキュメントはあまり役に立ちません。簡単に言うと、なぜこれを使用するのでしょうか?

また、John Papaの内部では ホットタオル という名前のカスタム関数があります。 $broadcast :

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

私はこれが何をやっているのか理解できませんでした。そこで、いくつかの基本的な質問をします。

1) $rootScope.$broadcast は何をするのでしょうか?

2) $rootScope.$broadcast$rootScope.$broadcast.apply ?

どのように解決するのですか?

  1. 何をするのですか? $rootScope.$broadcast は何をするのでしょうか?

    $rootScope.$broadcast はアプリケーションスコープを通してイベントを送信しています。 そのアプリの任意の子スコープは、単純な.NET Frameworkを使用してそれをキャッチすることができます。 $scope.$on() .

    直接の親ではないスコープに到達したい場合、イベントを送信するのが特に便利です(たとえば親のブランチなど)。

    !!! ひとつは しない を使用することです。 $rootScope.$on をコントローラから呼び出すことです。 $rootScope がアプリケーションである場合、コントローラが破壊されてもそのイベントリスナーは存在し続け、コントローラが再び作成されると、さらにイベントリスナーが積み重なるだけです。(つまり、一つのブロードキャストが何度もキャッチされることになります)。使用方法 $scope.$on() を使用すると、リスナーも破棄されます。

  2. との違いは何ですか? $rootScope.$broadcast &です。 $rootScope.$broadcast.apply ?

    時には apply() 特にディレクティブや他の JS ライブラリで作業するときは。しかし、私はそのコードベースを知らないので、ここがそうであるかどうかを判断することはできないでしょう。