Я использую Dojo.dnd для передачи предметов между областями. Проблема в том, что элементы будут вставлены на место после того, как я их уроню, но я бы хотел, чтобы они оставались там, где я их уронил, но только на одну область.
Вот небольшой код, чтобы объяснить это лучше:
<div id="dropZone" class="dropZone">
<div id="itemNodes"></div>
<div id="targetZone" dojoType="dojo.dnd.Source"></div>
</div>
"dropZone" - это DIV, который содержит две dojo.dnd.Source
-области, "itemNodes" (созданные программно) и "targetZone". Элементы (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
и определение «прямоугольника» на границах «targetZone» позволяет просто перемещать элементы внутри «targetZone», но как только я уронил их, я не смогу их перехватить обратно. (Странно: dojo.connect(node, "onMoved"
здесь не работает, даже не сработает, несмотря ни на что.)
Так вот в чем вопрос: можно ли создать два источника dnd.Source, где я могу перемещать элементы назад и вперед и позволить элементам быть «перемещаемыми» только в одном из источников?
сделать элементы подвижными, и если они не будут перемещены в "targetZone", они будут автоматически перемещены обратно в список в "itemNodes"?
После того, как страница отправлена, я должен сохранить положение каждого элемента, который был помещен в "targetZone". (Следующим шагом будет размещение элементов внутри «targetZone» при загрузке страницы, если сетка уже была заполнена ранее, но я был бы рад, если бы эта штука работала в первую очередь.)
Любая подсказка приветствуется.
Привет, Select0r