ホームページ > ウェブフロントエンド > jsチュートリアル > AngularJS でコントローラーはどのように相互に通信できますか?

AngularJS でコントローラーはどのように相互に通信できますか?

DDD
リリース: 2024-12-05 09:48:11
オリジナル
395 人が閲覧しました

How Can Controllers Communicate with Each Other in AngularJS?

AngularJS でのコントローラー間通信

AngularJS では、あるコントローラーが別のコントローラーを呼び出すことができます。これを実現するにはいくつかのアプローチがあり、それぞれに独自の利点と使用例があります。

Dependency Injection

この例では、HTML ドキュメントは MessageCtrl コントローラーを使用してメッセージを表示します。別のコントローラーからデータを渡すには、通信を仲介するサービスを作成できます。

<br>angular.module('myApp', []).<br> service('DataService' 、 function() {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">this.data = { date: new Date().toString() };
ログイン後にコピー

}).
コントローラー('MessageCtrl', ['$scope', 'DataService', function($scope, DataService) {

$scope.message = DataService.data.date;
ログイン後にコピー

}]).
コントローラー('DateCtrl', ['DataService', function(DataService) {

DataService.data.date = 'Custom date format';
ログイン後にコピー

}]);

このシナリオでは、MessageCtrl は DataService にアクセスできます。DataService は DateCtrl によって日付形式を変更するためにも使用されます。 。これにより、コントローラー間の通信が確実に同期されます。

スコープ イベント

もう 1 つの方法は、スコープでイベントを発行することです。イベントが発行されると、そのイベントのリスナーを登録しているすべてのコントローラーが応答できます。

<br>angular.module('myApp', []).<br>controller(' MessageCtrl', ['$scope', function($scope) {</p>
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">$scope.$on('dateUpdated', function(event, newDate) {
  $scope.message = newDate;
});
ログイン後にコピー

}]).
controller('DateCtrl', ['$scope', function($scope) {

$scope.$emit('dateUpdated', 'Custom date format');
ログイン後にコピー

}]);

この例では、DateCtrl MessageCtrl がリッスンし、メッセージを更新することで応答するイベントを発行します。これにより、より反応的な通信パターンが可能になります。

これらは、AngularJS でコントローラー間通信を実現する方法のほんの一部です。最適なアプローチは、アプリケーションの特定の要件によって異なります。

以上がAngularJS でコントローラーはどのように相互に通信できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
前の記事:AngularJS コントローラー間で変数を効果的に共有するにはどうすればよいですか? 次の記事:PhantomJS でクリックをシミュレートするには?
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
最新の問題
関連トピック
詳細>
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート