我有一個角度單一的頁面應用程序。JQuery + AngularJS:mousedown事件被多次調用
所以我寫了一個自己,我不能使用jquery可拖動的方法 -
// here I am setting the drag event to a div
var enableDrag = function(id){
$('#'+id).on('mousedown',handleMousedown);
}
var handleMousedown =function (e){
window.my_dragging = {};
my_dragging.pageX0 = e.pageX;
my_dragging.pageY0 = e.pageY;
my_dragging.elem = this;
my_dragging.offset0 = $(this).offset();
var isDragAction=false;
function handle_dragging(e){
isDragAction=true;
var left = my_dragging.offset0.left + (e.pageX - my_dragging.pageX0);
var top = my_dragging.offset0.top + (e.pageY - my_dragging.pageY0);
$(my_dragging.elem)
.offset({top: top, left: left});
}
function handle_mouseup(e){
$('body')
.off('mousemove', handle_dragging)
.off('mouseup', handle_mouseup);
if(isDragAction){
console.log("drag was done!!");
}
else{
console.log("click was done!!");
}
}
$('body')
.on('mouseup', handle_mouseup)
.on('mousemove', handle_dragging);
}
而在我的方法,我呼籲這個是這樣的:
//set off the last mousedwon to the div
$("someDiv").off('mousedown',handleMousedown);
//set the mousedwon to the div
enableDrag("someDiv");
我每次都需要調用它的方法被稱爲而不是一次,因爲我的角度應用程序是如何工作的。
拖動工作正常
問題是每一個方法被調用一次 - 除了以前的事件被添加一個新的事件..
含義:
第1種方法是被稱爲 - 拖動將打印到控制檯:
"drag was done!!"
第二個方法被調用,在一個單一的阻力:
"drag was done!!"
"drag was done!!"
n個時間方法被調用,在單個拖動:
"drag was done!!"
"drag was done!!"
.
.
.
"drag was done!!"
什麼累積的事件或導致此多次打印??
感謝
解決了它,謝謝! – Matoy