angular イベントリスナー, 組み込みイベント
フロントエンドフレームワークの場合、イベントといえばマウスのクリックやページのスクロールといったDOMイベントをイメージしがちです。しかし、angularのイベントはDOMイベントと同じものではありません。
イベントの投稿
イベントを公開するには、$emit() と $broadcast() を使用します。
$emit(name, args)
name は投稿されたイベントの名前です。
args は、イベントのリスナーにオブジェクトとして渡されます。
emit() によって投稿されたイベントは、子スコープから親スコープにバブルアップされ、イベントを生成したスコープより上位のすべてのスコープにイベントが通知されます。
$broadcast(name, args)
emitと同様、nameはイベントの名前、argsはリスナーが受け入れる引数です。このメソッドによるイベントの伝搬は、上から下へ、つまり親スコープから子スコープへの伝搬となります。
イベントのリスニング
イベントが公開されたので、そのイベントに応答するためにイベントをリッスンするサービスを登録する必要があります
イベントは、$on() メソッドによってイベントをリッスンするように登録することができます。
スコープ.$on(名前、リスナーFn)
listenerFn イベントは、name をイベント名とするイベントが発生したときに実行されます。
$on()は、リスナーをキャンセルするために使用することができる逆登録関数を返します。
イベントオブジェクト
すべてのイベントリスナーの最初のパラメータは、イベントオブジェクトを表し、以下のプロパティを持ちます。
targetScope スコープオブジェクト、送信されたイベントのスコープ
currentScope: イベントを現在処理しているスコープ
name:現在のイベントのイベント名
stopPropagation:$emitによって引き起こされたイベントのさらなる伝播をキャンセルします。
preventDefaul: defaultPreevented フラグを true に設定し、サブスコープに、それ無しでもイベントを処理できることを伝えます。
defaultPreevented: ブール値
angular組み込みイベント
IncludeContentLoaded ($emit イベント)
ngInclude コンテンツが再読み込みされたときに ngInclude ディレクティブからトリガーされます。
インクルードコンテンツリクエスト ($emit イベント)
ngInclude が呼び出されたスコープから送信され、このイベントは ngInclude のコンテンツが要求されるたびに投稿されます。
viewContentLoaded ($emit イベント)
ngViewのコンテンツがリロードされたときにngViewスコープからポストします。
$locationChangeStart($broadcast event)
locationChangeStart イベントは、$location サービスを経由してブラウザのアドレスが更新されたときに発生します。
$locationChangeSuccess($broadcast event)
ブラウザのアドレスが正常に変更されたときにトリガーされる
ルート変更開始($broadcast event)
このイベントはルート変更が発生する前に $rootScope から投稿されます。
関連
-
ImportError: Missing required dependencies ['numpy'] 最初のインポートpandas問題に対する解決策。
-
PostionalBindingの役割のCmdletBindingAttribute
-
デバッグアサーションに失敗しました
-
ArrayAdapter がリソース ID に TextView を要求する問題を解決する方法
-
java lang ClassCastException java util ArrayList cannot be able to be.
-
raise JSONDecodeError("Expecting value", s, err.value) from None
-
予期しないトークン「()」付近の構文エラー 問題解決
-
スーパークラス「javax.servlet.http.HttpServlet」がJavaビルドパスソリューションで見つかりませんでした。
-
numpy.concatenate merge matrix エラー ValueError: すべての入力配列は同じ次元数でなければなりません。
-
Androidアプリケーション開発 - ビープ音とバイブレーションによる警告の実装
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
cmake :pthread_createへの未定義の参照、CMakeがpthreadライブラリを必要とする問題
-
can't find '__main__' module in "問題の詳細!
-
github共通の操作と共通のエラー! fatal: リモートリポジトリから読み取れませんでした。
-
解決済み VMの初期化中にエラーが発生しました java/lang/NoClassDefFoundError: java/lang/O...
-
Uncaught ReferenceError: require is not defined at ES6.js:1 (anonymous) @ ES6.js:1
-
php_network_getaddresses: getaddrinfo が失敗した 原因
-
pythonプログラミング放課後問題集(程春輝)
-
C++で'atoi'がこのスコープで宣言されていない問題を解決するにはどうしたらいいですか?
-
ValueErrorの解決策です。閉じたファイルへの I/O 操作
-
Eclipseオンラインインストールエラー インストールするアイテムの収集中にエラーが発生しました。