我有一個呈現按鈕的簡單指令。如果立即反彈,事件處理程序不會解除綁定
該指令的鏈接功能執行以下操作:
- 綁定「的mouseenter」和「鼠標離開」事件。
- 取消綁定'mouseenter'和'mouseleave'事件。
- 再次綁定'mouseenter'和'mouseleave'事件。
事件處理程序將簡單消息記錄到控制檯。我希望處理程序在mouseenter或mouseleave上被調用一次。然而,它們被執行兩次,就好像第二步從未發生過一樣。
的指令代碼:
function ButtonDirective() {
return {
restrict: 'E',
template: '<button><span ng-transclude></span></button>',
transclude: true,
replace: true,
link: function (scope, element, attrs) {
function mouseEnterHandler() {
console.log('mouse enter');
}
function mouseLeaveHandler() {
console.log('mouse leave');
}
element.bind('mouseenter', mouseEnterHandler);
element.bind('mouseleave', mouseLeaveHandler);
element.unbind('mouseenter');
element.unbind('mouseleave');
element.bind('mouseenter', mouseEnterHandler);
element.bind('mouseleave', mouseLeaveHandler);
}
}
}
以下plunker說明了問題:
http://plnkr.co/ocXYYZ2jv09Ch7GDRaat
沒有任何人有一個想法,爲什麼它的行爲這樣?
更新:如果您包含jQuery而不是在JQLite上回落,它將起作用。唉,它不適合我。
是的,真實的,但這是可選的。也嘗試過使用該功能。同樣的結果。 –
是的你是對的,有趣的是你可以繼續複製解除綁定和數量也會增加。 –