[解決済み] あるAngularJSのコントローラが別のコントローラを呼び出すことはできますか?
2022-03-17 06:29:34
質問
あるコントローラーで別のコントローラーを使用させることは可能ですか?
例えば、こんな感じです。
で配信されたメッセージを単純に表示したHTML文書です。
MessageCtrl
のコントローラーを使用しています。
messageCtrl.js
ファイルを作成します。
<html xmlns:ng="http://angularjs.org/">
<head>
<meta charset="utf-8" />
<title>Inter Controller Communication</title>
</head>
<body>
<div ng:controller="MessageCtrl">
<p>{{message}}</p>
</div>
<!-- Angular Scripts -->
<script src="http://code.angularjs.org/angular-0.9.19.js" ng:autobind></script>
<script src="js/messageCtrl.js" type="text/javascript"></script>
</body>
</html>
コントローラファイルには、以下のコードが含まれています。
function MessageCtrl()
{
this.message = function() {
return "The current date is: " + new Date().toString();
};
}
これは単に現在の日付を表示するものです。
もう一つコントローラを追加するとしたら。
DateCtrl
に特定の書式で日付を渡す。
MessageCtrl
このような場合、どのようにすればよいのでしょうか。 DIフレームワークでは
XmlHttpRequests
とサービスにアクセスすることができます。
解決方法は?
コントローラ間の通信には複数の方法があります。
一番いいのは、サービスを共有することでしょう。
function FirstController(someDataService)
{
// use the data service, bind to template...
// or call methods on someDataService to send a request to server
}
function SecondController(someDataService)
{
// has a reference to the same instance of the service
// so if the service updates state for example, this controller knows about it
}
もう一つの方法は、スコープでイベントを発することです。
function FirstController($scope)
{
$scope.$on('someEvent', function(event, args) {});
// another controller or even directive
}
function SecondController($scope)
{
$scope.$emit('someEvent', args);
}
どちらの場合も、同様に任意のディレクティブと通信することができます。
関連
-
Vueの一般的な組み込みディレクティブの説明
-
[解決済み】エラー。Ionic使用中にモジュール '../lib/utils/unsupported.js' が見つかりませんでした。
-
[解決済み】<select>で現在選択されている<option>をJavaScriptで取得するにはどうすればよいですか?
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] あるJavaScriptファイルを他のJavaScriptファイルにインクルードするにはどうすればよいですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] どのラジオボタンが選択されているかをjQueryで知るにはどうしたらよいですか?
-
[解決済み] AngularJSでデータバインディングはどのように機能するのですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
vueネットワークリクエストソリューション ネイティブネットワークリクエストとjsネットワークリクエストライブラリ
-
vueの補間表現とv-textディレクティブの違いについて
-
vueにおけるv-forループオブジェクトのプロパティ
-
Vueのクラススタイルの使い方の詳細
-
Vueのイベント処理とイベントモディファイアの解説
-
[解決済み】Node.jsで "Cannot find module "エラーを解決するには?
-
HTML5 LocalStorage ローカルストレージとセッションストレージの使用法
-
Uncaught TypeError: null のプロパティ 'offsetHeight' を読み取れませんでした。
-
JSクリックイベント - Uncaught TypeError: プロパティ 'onclick' に null を設定できません。
-
JavaScriptのgetElementById、getElementsByTagNam、getElementsByClassNameの違いと使い方