我正在使用Dojo.dnd在各区域之间传输项目。问题是:一旦我放下它们,物品就会卡入到位,但我希望让它们留在我放置的地方,但只限于一个区域。使用Dojo拖放和Dojo移动一起移动
这里有一个小的代码来解释这更好:
<div id="dropZone" class="dropZone">
<div id="itemNodes"></div>
<div id="targetZone" dojoType="dojo.dnd.Source"></div>
</div>
“悬浮窗” 是包含两个dojo.dnd.Source
-areas, “itemNodes”(程序创建)和 “targetZone” 一个DIV。项目(带有图像的DIV)应该从简单的列表中拖出“itemNodes”到“targetZone”并保持它们被放置的位置。只要他们被拖出“targetZone”,他们应该回到“itemNodes”内的列表。
下面是我用它来创建项目代码:
var nodelist = new dojo.dnd.Source("itemNodes");
{Smarty-Loop}
nodelist.insertNodes(false, ['<img class="dragItem" src="{$items->info.itemtext}" alt="{$items->info.itemtext}" border="0" />']);
{/Smarty-Loop}
可是这样我只是有一个项目的两个列表,项目投进“targetZone”不会留在我放弃了他们。我已经尝试了循环dojo.query(".dojoDndItem").forEach(function(node)
抓住所有项目并将其更改为“可移动”型:
- 使用
dojo.dnd.move.constrainedMoveable
将更改的项目,使他们能够总是随意移动(即使在“itemNodes”) - 使用
dojo.dnd.move.boxConstrainedMoveable
并且将“box”定义为“targetZone”的边框使得它可以在“targetZone”内移动物品,但是一旦我放下物品,我就无法抓住并移动它们。 (奇怪:dojo.connect(node, "onMoved"
不会在这里工作,甚至会不火,不管是什么。)
所以这里的问题:是否有可能创建两个dnd.Sources在那里我可以移动的物品来回并让这些物品仅在其中一个来源中“可移动”?
或者是否有一种解决方法,如使物品可移动,如果它们没有放入“targetZone”,它们会自动移回“itemNodes”中的列表?
提交页面后,我必须保存已放置到“targetZone”中的每个项目的位置。 (如果网格已经被填充,下一步将在页面加载时将这些项目放置在“targetZone”内部,但是如果网格已经被填充,我会很高兴。)
任何提示是赞赏。
问候,Select0r
太糟糕了,不过谢谢。我想,只要我遇到自定义解决方案,我会再打开一个问题:) – Select0r 2010-04-06 08:04:33