2014-02-27 43 views
1

我從兩個獨立模塊中有兩個具有相同名稱的指令。 一個是第三方模塊,我無法對其進行更改。它將一個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」選項,但它也沒有工作。

+0

貴'bind'回調得到執行?第三方的綁定方法之前還是之後? – asgoth

+0

在第三方綁定之前 –

+0

請改用'event.stopImmediatePropagation()'。 – asgoth

回答

1

看一看event.stopImmediatePropagation()

除了保持從 一個元件上的任何額外的處理程序被執行,該方法也通過隱含 調用event.stopPropagation()停止冒泡。爲了簡單地阻止冒泡到祖先元素的事件 ,但允許在相同元素上執行其他事件處理程序 ,我們可以使用event.stopPropagation() 代替。

所以......

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