Dojo:拖放停止拖动

Dojo:拖放停止拖动,dojo,drag-and-drop,Dojo,Drag And Drop,我正在尝试使用Dojo dnd Source(1.4.2)创建一个接口,在这个接口中,我可以将一些对象从源移动到目标。它工作正常,但我想更改行为,以便在实际执行D&D之前执行检查,因此如果检查失败,将向用户显示错误消息,并且不会执行D&D。我尝试了在博客中找到的以下示例: dojo.subscribe("/dnd/drop", function(source,nodes,iscopy) { if (nodes[0].id == 'docs_menu'){ dojo.publish

我正在尝试使用Dojo dnd Source(1.4.2)创建一个接口,在这个接口中,我可以将一些对象从源移动到目标。它工作正常,但我想更改行为,以便在实际执行D&D之前执行检查,因此如果检查失败,将向用户显示错误消息,并且不会执行D&D。我尝试了在博客中找到的以下示例:

 dojo.subscribe("/dnd/drop", function(source,nodes,iscopy)
 { 
  if (nodes[0].id == 'docs_menu'){
   dojo.publish("/dnd/cancel");
   dojo.dnd.manager().stopDrag();
   alert("Drop is not permitted");
  }
  }
  );
但是它没有说这个.avatar是空的。有人知道怎么做吗

谢谢


Jose

执行此类检查的正确方法是覆盖
dojo.dnd.source
中的
checkacception(源、节点)
函数

var target = dojo.dnd.Source(node, {
    checkAcceptance(source, nodes) : function() {
        if (nodes[0].id == 'docs_menu') {
            return false;
        }
        return this.inhertied(arguments);
    }
});

有关详细信息,请参阅。

执行此类检查的正确方法是覆盖
dojo.dnd.source
中的
checkAcceptance(源、节点)
函数

var target = dojo.dnd.Source(node, {
    checkAcceptance(source, nodes) : function() {
        if (nodes[0].id == 'docs_menu') {
            return false;
        }
        return this.inhertied(arguments);
    }
});

有关更多详细信息,请参阅。

我遇到了一个案例,在该案例中,我对列表中项目的顺序有限制。有些项目必须先于其他项目。由于订单未在验收阶段设置,因此无法在验收阶段进行检查。我用下面的方法解决了这个问题

on(mySource, "Drop", function(source, nodes, copy){
   var invalid = false;
   // ... run the checks to see if the new order is valid
   // Keep the original order in a parameter named *data*   

   if(invalid == true) {
      mySource.selectAll();
      mySource.deleteSelectedNodes();
      mySource.insertNodes(false, data);
   }
   else
   {
      // Have the data added
   }
 }); 

我遇到了一个例子,在这个例子中,我对列表中项目的顺序有限制。有些项目必须先于其他项目。由于订单未在验收阶段设置,因此无法在验收阶段进行检查。我用下面的方法解决了这个问题

on(mySource, "Drop", function(source, nodes, copy){
   var invalid = false;
   // ... run the checks to see if the new order is valid
   // Keep the original order in a parameter named *data*   

   if(invalid == true) {
      mySource.selectAll();
      mySource.deleteSelectedNodes();
      mySource.insertNodes(false, data);
   }
   else
   {
      // Have the data added
   }
 });