加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 什么是最好的方法来取消嵌套ng单击调用之间的事件

发布时间:2020-12-17 09:22:18 所属栏目:安全 来源:网络整理
导读:这里有一个例子。假设我想要一个图像叠加像很多网站。因此,当您点击缩略图时,整个窗口上会显示一个黑色叠加层,而图片的较大版本位于其中央。点击黑色覆盖层会将其忽略;单击图像将调用显示下一个图像的函数。 html: div ng-controller="OverlayCtrl" clas
这里有一个例子。假设我想要一个图像叠加像很多网站。因此,当您点击缩略图时,整个窗口上会显示一个黑色叠加层,而图片的较大版本位于其中央。点击黑色覆盖层会将其忽略;单击图像将调用显示下一个图像的函数。

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说,或传递$事件对象到ng单击回调和停止传播它:
<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
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读