Angular の $on と $broadcast はコンポーネント間の通信をどのように促進しますか?

Linda Hamilton
リリース: 2024-10-28 11:09:02
オリジナル
870 人が閲覧しました

How do Angular's $on and $broadcast Facilitate Communication Between Components?

Angular の通信パターン: $on と $broadcast の公開

複雑な Angular アプリケーションを開発する場合、コンポーネントが通信する必要があることがよくあります。お互い。 Angular は、この通信を促進する堅牢なメカニズムを提供し、コンポーネントがイベントとデータを交換できるようにします。そのような 2 つのメカニズムは、$on と $broadcast で、イベントベースのインタラクションで重要な役割を果たします。

$on と $broadcast について

$on は、次のメソッドです。アプリケーション内の他のコンポーネントによってブロードキャストされるイベントをサブスクライブします。これにより、コンポーネントはアプリケーション内の任意の場所で発行される特定のイベントをリッスンして反応することができます。一方、

$broadcast はイベントの発行に使用されます。コンポーネントは、$broadcast を使用して、$on を使用してサブスクライブしている他のコンポーネントが受信できるイベントを送信できます。

例: コントローラー間のイベント通信

検討してください独立したビューを持つ 2 つのコントローラー footerController と codeScannerController があるシナリオ。 footerController で特定のアクションが発生したときに、codeScannerController でイベントをトリガーしたいとします。

これを実現するには、次のように $broadcast と $on を使用できます。

footerController.js 内:

<code class="javascript">$scope.startScanner = function() {
    $rootScope.$broadcast('scanner-started');
};</code>
ログイン後にコピー

codeScannerController.js 内:

<code class="javascript">$scope.$on('scanner-started', function(event, args) {
    console.log("scanner started");
});</code>
ログイン後にコピー

この例では、footerController は $rootScope.$broadcast を使用して「scanner-started」イベントをトリガーし、codeScannerController は次を使用してこのイベントをリッスンします。 $スコープ.$オン。イベントがトリガーされると、codeScannerController はコールバック関数を実行し、「スキャナーが開始されました」というメッセージをログに記録します。

イベントでの引数の受け渡し

$broadcast では、追加の引数を渡すことができます。イベントと一緒に。これらの引数は、受信コンポーネントにコンテキストまたはデータを提供するために使用できます。引数を渡す場合:

<code class="javascript">$rootScope.$broadcast('scanner-started', { scannerID: 123 });</code>
ログイン後にコピー

コールバック関数で引数を受け取る場合:

<code class="javascript">$scope.$on('scanner-started', function(event, args) {
    var scannerID = args.scannerID;
});</code>
ログイン後にコピー

結論

$on と $broadcast はAngular アプリケーションでイベント駆動型通信を実装するための強力なツール。これらのメカニズムを理解することで、開発者は効果的に相互作用できる分離されたコンポーネントを作成できるようになり、コードの保守性とスケーラビリティの向上につながります。

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

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