javascript - AngularJS:如何停止 ng-click 的事件传播?

标签 javascript angularjs angularjs-directive event-propagation

我有这样的指令:

app.directive('custom', function(){
    return {
        restrict:'A',
        link: function(scope, element){
            element.bind('click', function(){
                alert('want to prevent this');
            });

        }
    }
});

是的,对于这种情况,有必要进行 jQuery 方式的绑定(bind)。

现在我想在满足某些条件时停止此事件(点击)传播。

尝试过:

  $event.stopPropagation();
  $event.preventDefault();

但这并没有帮助。

例如这里的 fiddle - http://jsfiddle.net/STEVER/5bfkbh7u/

最佳答案

在您的情况下,您无法停止传播,因为点击事件发生在同一元素上,只有两个不同的处理程序。

但是,您可以利用 Controller ngClick 和指令中的相同 事件对象这一事实。所以你可以做的是为这个事件对象设置一些属性并在指令中检查它:

$scope.dosomething = function($event){
    $event.stopPropagation();
    $event.preventDefault();
    alert('here');

    if (someCondtion) {
        $event.stopNextHandler = true;
    }
}

在指令中:

link: function(scope, element){
    element.bind('click', function(e) {
        if (e.stopNextHandler !== true) {
            alert('want to prevent this');    
        }
    });            
}

演示: http://jsfiddle.net/5bfkbh7u/6/

关于javascript - AngularJS:如何停止 ng-click 的事件传播?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28586231/

相关文章:

javascript - AngularJS - 在自定义过滤器中获取对象索引

javascript - AngularJS:如何将对象映射到 HTML 属性

javascript - 动态生成时引导选项卡不起作用

Javascript 映射两个对象数组

javascript - jQuery onChange 为输入提供一个值

javascript - Angular 指令限制的粒度更好

javascript - 向 AngularJS 中的输入字段添加前缀值

c# - 从谷歌地图 v3 方向 api 的结果中获取纬度和经度?

javascript - AngularJS 表单提交不起作用

angularjs - Angular 1.2 和 Angular 2 共存和增量升级指南