举个例子。比方说,我想有一个图像覆盖像许多网站。所以当你点击一个缩略图时,整个窗口会出现一个黑色的覆盖层,并且图像的放大版本会以它为中心。单击黑色覆盖将解除它; 单击图像将调用显示下一个图像的函数。
译者:
<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 方法,它不需要我用这个代码片段给覆盖图中的元素添加所有函数的前缀。