AngularJS で $broadcast() を使用する
この記事では、AngularJS の $broadcast()
について紹介します。
AngularJS で $broadcast()
を使用する
$broadcast()
は、親コントローラから子コントローラにイベントを送信する $rootScope
メソッドです。 その特定のスコープのリスナーがキャッチできるイベントを送信します。
イベントが親コントローラーから子コントローラーに送信されると、子コントローラーは別のメソッド $scope.$on
を使用してイベントを処理できます。
$broadcast()
を使用する例を見てみましょう。 まず、コントローラーを定義する新しいファイル script.js
を作成します。
親コントローラから子コントローラへ $broadcast()
を使ってメッセージを送り、子コントローラでそのイベントを受け取り、別のメソッド $scope.$on()
を使ってコンソールにログ出力します。
# angular
import angular from 'angular';
var app = angular.module('app', []);
app.controller("parentCtrl", function ($scope) {
$scope.handleClick = function (msg) {
$scope.$broadcast('sendMsg', { message: msg });
};
});
app.controller("childCtrl", function ($scope) {
$scope.$on('sendMsg', function (event, args) {
$scope.message = args.message;
console.log($scope.message);
});
});
それでは、index.html
にフロントエンドを作成しましょう。ここで、親コントローラーからメッセージを受け取る入力を作成します。 send
ボタンをクリックすると、子コントローラーに送信されます。
以下に示すように、子コントローラーはメッセージを受信し、コンソールにログオンします。
# angular
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="lib/style.css" />
<script src="lib/script.js"></script>
</head>
<body ng-app="app">
<div ng-controller="parentCtrl">
<h1>Send to Child controller</h1>
<input ng-model="msg">
<button ng-click="handleClick(msg);">Broadcast</button>
<br /><br />
<div ng-controller="childCtrl">
</div>
</div>
</body>
</html>
出力:
コンソール:
上記の例から、$broadcast()
を使用して、イベントまたはメッセージを親コントローラーから子コントローラーに送信しました。 そして $scope.$on()
メソッドを使用して、子コントローラーでイベントまたはメッセージを受け取り、いくつかの機能を実行しました。
Rana is a computer science graduate passionate about helping people to build and diagnose scalable web application problems and problems developers face across the full-stack.
LinkedIn