在元素上具有相同事件绑定的多个指令

时间:2014-02-27 20:31:37

标签: angularjs angularjs-directive

我有两个具有相同名称的指令来自两个独立的模块。 一个是第三方模块,我无法对其进行更改。它将mousewheel事件绑定到元素。

我编写了自己的指令,试图撤消此绑定。

angular.module('myModule').directive('ngViewport', [function () {
    return {
        restrict: 'A',
        priority: -1,
        link: function ($scope, element, attrs) {
            element.bind("mousewheel DOMMouseScroll", function (event) {
                event.stopPropagation();
                return true;
            });
        }
    };
}]);

这不起作用。我也尝试在元素上使用“unbind”选项,它也没有用。

1 个答案:

答案 0 :(得分:1)

看看event.stopImmediatePropagation()

  

除了在元素上保留任何其他处理程序之外   执行时,此方法也会隐式停止冒泡   致电event.stopPropagation()。简单地阻止事件发生   冒泡到祖先元素但允许其他事件处理程序   在同一个元素上执行,我们可以使用event.stopPropagation()   代替。

因此...

...
element.bind("mousewheel DOMMouseScroll", function (event) {
  event.stopImmediatePropagation();
  return true;
});
...