Dojo DND创建多个项目

时间:2012-10-31 14:53:14

标签: dojo drag-and-drop

经过几个小时的尝试和谷歌搜索,我得到了一个我无法回答的问题:(

我创建了三个dojo.dnd.Source组件。它用于将用户耦合到一个项目,所以在左边我有项目,在右边我有我的用户,在中心我有一个画布。我设置了相关的创建者和检查接受功能,一切都很顺利。

在中心画布上,用户可以删除一个项目,该项目显示为包含所有相关用户作为div元素的div。可以删除的另一个dndtype是用户类型,在这种情况下,我想清空画布并显示与删除用户相关的所有项目。只要我在画布上放置项目或用户,就会调用创建者函数。问题是创建者函数返回应删除的1个元素,如果我删除用户,我需要在画布上绘制几个元素,这样创建者方法就不能完全覆盖它,因为它只返回一个元素。

为了应对默认行为,我尝试手动将项目添加到画布并只返回一个,我知道它并不漂亮:S它正在工作,但我遇到了奇怪的行为,如果我移动项目canvas将其视为用户而不是项目。

最重要的是,有没有一种方法让你知道放弃一个项目并创建多个项目。我正在寻找自己触发掉落事件,但无济于事。

谢谢!

1 个答案:

答案 0 :(得分:0)

您正在寻找的事件是Source的onDrop事件。检查API文档以了解您可以使用的更多事件:在商店内部和商店之间使用onDropExternal和onDropInternal。

require(["dojo/dnd/Source"], function(Source){
  var source = new Source({
     onDrop = function(source, nodes, copy)  {
       //called only on the current target, when drop is performed
       this.inherited(arguments); //execute the default onDrop function  
       //now add the node(s) to the other stores here
       //you might be able to just do something like: 
       source2.insertNodes(nodes);//but this is untested ;)
     }
  });
});
相关问题