2013-03-05 69 views
0

“跳”我使用位于AngularJS主站点的示例代码。当我移动第一个可拖动对象时,一切都很好。只要我开始拖动第二个对象,第二个对象就会“跳”到第一个对象被移动的距离。AngularJS,多个项目拖动使初始移动

起初我以为解决将是作为重置变量一样简单。不幸的是,我所有的尝试都造成了'缩进错误'。

# Angular Drag Components RE-uses vars from previous drag, bugging out the dragging 
angular.module("aehalo", []).directive "draggable", ($document) -> 
    startX = 0 
    startY = 0 
    x = 0 
    y = 0 
    (scope, element, attr) -> 
    mousemove = (event) -> 
     y = event.screenY - startY 
     x = event.screenX - startX 
     element.css 
     top: y + "px" 
     left: x + "px" 

    mouseup = -> 
     $document.unbind "mousemove", mousemove 
     $document.unbind "mouseup", mouseup 
    element.css 
     position: "relative" 
     border: "1px solid red" 
     backgroundColor: "lightgrey" 
     cursor: "pointer" 
    element.bind "mousedown", (event) -> 
     startX = event.screenX - x 
     startY = event.screenY - y 
     $document.bind "mousemove", mousemove 
     $document.bind "mouseup", mouseup 
+2

缩进错误听起来像CoffeeScript的,没有棱角的问题。关于你的问题 - 在任何其他事情之前,重新设置x/y值的正确位置似乎是mousedown事件。 – 2013-03-05 21:18:53

+0

所以在所述位置加入“X = 0”和“y = 0”还是引起的压痕错误。当我用0直接替换x和y时,在任何移动之前对象都会移回原始位置。 – 2013-03-06 10:51:50

+1

听起来更像共享范围问题。你是否在隔离指令的范围?上面的代码似乎没有。 – Sharondio 2013-03-08 18:19:34

回答

2

这听起来像在mousedown复位xy甚至会修:

element.bind "mousedown", (event) -> 
     x = 0 
     y = 0 
     startX = event.screenX - x 
     startY = event.screenY - y 
     $document.bind "mousemove", mousemove 
     $document.bind "mouseup", mouseup 

如果你仍然得到的缩进错误,请确保您不要混用制表符和空格在您的缩进。