我使用dojo/dnd/Moveable
在页面上拖动div
,与下面的示例类似。
在用户拖动'move'
时运行的事件div
期间我需要应用一些逻辑(在我的实例中我需要检查一些鼠标坐标),如果逻辑无效我需要停止拖动div。
我尝试使用dojo.dnd.manager.stopDrag()但没有成功。
我想知道:
工作代码示例将不胜感激。感谢。
https://jsfiddle.net/mbrhb7nn/
require(["dojo/dnd/Moveable", "dojo/dom", "dojo/on", "dojo/domReady!"],
function(Moveable, dom, on){
on(dom.byId("doIt"), "click", function(){
var dnd = new Moveable(dom.byId("dndOne"));
dnd.on('Move', function (event) {
// add some logic here and stop drag
}.bind(this));
});
});
答案 0 :(得分:1)
我能够使用constrainedMoveable
中的dojo/dnd/move
来解决我的问题。
基本上可以设置一个"区域"在拖动仅允许的情况下,我使用了constrainedMoveable
,因为我需要动态计算"区域"
实际上dojo/dnd/move
提供了几个专门的Movables:
<强> constrainedMoveable 强>
用于约束移动到动态计算的框。
注意:函数约束(必须被覆盖)并且必须返回具有l,t,w,h
的以下属性的对象(left / top / width / height)。
<强> boxConstrainedMoveable 强>
可用于约束移动到预定义的框。
<强> parentConstrainedMoveable 强>
可用于通过节点父节点的边界来约束移动。
更多信息可以是found here。
这里的工作示例: https://jsfiddle.net/mbrhb7nn/5/
require(["dojo/dnd/move", "dojo/dom", "dojo/on", "dojo/domReady!"],
function (move, dom, on) {
var dnd = new move.constrainedMoveable(dom.byId("dndOne"));
dnd.constraints = function (event) {
// defines the area where dragging is allowed
return {
l: 0,
t: 0,
w: 300,
h: 300
};
}
});