0

经过几个小时的尝试和谷歌搜索后,我得到了一个没有答案的问题:(

我创建了三个 dojo.dnd.Source 组件。它用于将用户与项目耦合,因此左侧是项目,右侧是用户,中间是画布。我设置了相关的创建者和检查验收功能,一切都很好。

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

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

最重要的是,你们知道有没有一种方法可以删除一个项目并创建多个项目。我正在寻找自己触发 drop 事件,但无济于事。

谢谢!

4

1 回答 1

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 ;)
     }
  });
});
于 2012-11-01T02:49:36.253 回答