これが例です。多くのサイトのように画像オーバーレイを作成したいとします。したがって、サムネイルをクリックすると、ウィンドウ全体に黒いオーバーレイが表示され、画像の拡大版がウィンドウの中央に配置されます。黒いオーバーレイをクリックすると、それが閉じられます。画像をクリックすると、次の画像を表示する関数が呼び出されます。
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の方法があるかどうかを知りたいです。