AngularJS - 捕捉拖动

Posted

技术标签:

【中文标题】AngularJS - 捕捉拖动【英文标题】:AngularJS - Snapping drag 【发布时间】:2014-05-24 21:28:06 【问题描述】:

查看来自 AngularJS 网站 (http://docs.angularjs.org/guide/compiler) 的指南,我有:

app.directive('task', function($document)
    return 
        restrict: 'C',
        link: function(scope, element, attr) 
            var startX = 0, startY = 0, x = 0, y = 0;
            element.on('mousedown', function(event) 
                // Prevent default dragging of selected content
                event.preventDefault();
                startX = event.screenX - x;
                startY = event.screenY - y;
                $document.on('mousemove', mousemove);
                $document.on('mouseup', mouseup);
            );

            function mousemove(event) 
                y = event.screenY - startY;
                x = event.screenX - startX;

                element.css(
                    top: y + 'px',
                    left:  x + 'px'
                );

            

            function mouseup() 
                $document.unbind('mousemove', mousemove);
                $document.unbind('mouseup', mouseup);
            
        
    
);

这很好用,除了我不想要平滑拖动功能。相反,我想将项目拖动 200 像素,然后我希望它捕捉到该位置,然后如果再移动 200 像素,然后再次捕捉回来。我该怎么做?

【问题讨论】:

你可以使用jquery ui拖拽,它有丰富的api支持你的场景 【参考方案1】:

如果您有一个固定的网格,只需将其应用于您的 X 和 Y 坐标,如下所示:

y = event.screenY - startY;
x = event.screenX - startX;
y = y - ( y % gridSizeY );
x = x - ( x % gridSizeX );

【讨论】:

以上是关于AngularJS - 捕捉拖动的主要内容,如果未能解决你的问题,请参考以下文章

css 滑动并捕捉AngularJS指令

AngularJS ng-拖动

AngularJS - 如何制作可拖动的树?

AngularJs 使元素在 DOM 中可动态拖动或放置

如何修复 AngularJS 指令中的“jQuery 可拖动不是函数”

使用 HTML5 和 AngularJS 拖动表格列