[解決済み] ネストされたng-click呼び出し間のイベント伝搬をキャンセルする最良の方法は何ですか?
2022-04-14 06:22:57
質問
例を挙げます。 多くのサイトのように、画像のオーバーレイを表示させたいとします。 サムネイルをクリックすると、ウィンドウ全体に黒いオーバーレイが表示され、その中に画像の拡大版が中央に表示されるわけです。 黒いオーバーレイをクリックするとそれが消え、画像をクリックすると次の画像を表示する関数が呼び出されます。
htmlのことです。
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage()"/>
</div>
javascriptです。
function OverlayCtrl($scope) {
$scope.hideOverlay = function() {
// Some code to hdie the overlay
}
$scope.nextImage = function() {
// Some code to find and display the next image
}
}
問題は、この設定の場合、画像をクリックすると、両方の
nextImage()
と
hideOverlay()
が呼び出されます。 しかし、私が欲しいのは
nextImage()
が呼び出されます。
でイベントを捕捉し、キャンセルできることは知っています。
nextImage()
関数はこのようになります。
if (window.event) {
window.event.stopPropagation();
}
...しかし、このスニペットでオーバーレイ内の要素上のすべての関数をプレフィックスする必要がない、より良いAngularJSの方法があるかどうかを知りたいのです。
解決方法は?
JosephSilber が言ったように、あるいは $event オブジェクトを
ng-click
コールバックの中で伝搬を停止させます。
<div ng-controller="OverlayCtrl" class="overlay" ng-click="hideOverlay()">
<img src="http://some_src" ng-click="nextImage($event)"/>
</div>
$scope.nextImage = function($event) {
$event.stopPropagation();
// Some code to find and display the next image
}
関連
-
[解決済み] select 要素のデフォルト値を設定するための ng-option の使用方法
-
[解決済み] シンプルなangularjsの日付入力
-
[解決済み] AngularJSの$parentは何を意味するのですか?
-
[解決済み] angularjsで$compileを操作する
-
angularでのng-repeatとtrack by
-
[解決済み] Jasmineの "callThrough "と "callFake() "の実用的な例が欲しい
-
[解決済み] クラスを条件付きで適用する場合の最適な方法は何ですか?
-
[解決済み] ng-modelとng-bindの違いは何ですか?
-
[解決済み] AngularJSでコントローラ間の通信を行う正しい方法は何ですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Angular JS $locationChangeStart 次の url ルートオブジェクトを取得する
-
[解決済み] Angular 1.2+ で ng-bind-html-unsafe を複製するために $sce.trustAsHtml(string) を使用するにはどうしたらよいですか?
-
[解決済み] ag-gridの行の追加/削除
-
[解決済み] AngularJSの$parentは何を意味するのですか?
-
[解決済み] エラーです。10回の$digest()反復に達しました。動的なsortby述語で中断!?
-
処理されない例外が発生しました。Angular 実行中のプロジェクトで NGCC に失敗しました。
-
angularjsのルーティングについて $stateと$stateParamsの話
-
[解決済み] Angularjsを使用してローカルストレージにデータを保存するにはどうすればよいですか?
-
[解決済み] ng-classを使った複数クラスの追加
-
[解決済み] 条件に応じて特定のルートにリダイレクトする機能