我正在使用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