Додзе перетащите, как мы сохраняем позицию - PullRequest
0 голосов
/ 19 мая 2010

После перетаскивания додзе, после отправки страницы, я должен сохранить положение каждого элемента, который был помещен в "targetZone". Как мы можем сохранить позицию?

Ответы [ 2 ]

1 голос
/ 12 января 2012

Евгений ответил здесь: Dojo Перетаскивание: как получить порядок элементов?

Это был бы правильный путь. Если вы посмотрите на приведенную выше ссылку, вы можете сохранить получившийся объект orderDataItems как JSON ...

Посмотрите на следующую функцию. Это сохраняет наш DND "Lightbox" (dojo.dnd.source) в JSON.

  • _ это текущий необработанный элемент
  • _it.data.item содержит все ваши вещи, которые вам нужно сохранить
  • в нашем случае _it.data.item.label сохраняет настроенные узлы (изображения, видео, документы) в виде строки, которую мы можем использовать позже для dojo.place it
  • это элемент dnd, который вы хотите сохранить без узлов dom

например. если вы перетаскиваете элементы из дерева dijit в произвольный источник / цель dojo dnd: _RAM или _S в нашем data.item, который мы сделали до того, как должны быть перезаписаны.

LBtoJson: function(){
        var that = this;
        var orderedLBitems = this.dndSource.getAllNodes().map(function(node){

            var _it = that.dndSource.getItem(node.id);

            var it = { data:{ item:{} }, label:'', type:'' };
            if((_it.data.item._RAM)){_it.data.item._RAM={}}
            if((_it.data.item._S)){_it.data.item._S={}}

            it.data.item = dojo.clone(_it.data.item);
            it.label = it.data.item.label[0]||it.data.item.label;
            it.type = _it.type;
            console.log( it );
            return it;
        });
        var LBjson = dojo.toJson(orderedLBitems);
        return LBjson;
    }
0 голосов
/ 28 апреля 2011

Вызвав getAllNodes (), вы получите список узлов в порядке их отображения. Поэтому, если вы хотите сохранить список в определенном порядке, вы можете сделать что-то похожее на это:

var data;
var nodes = dndSrc.getAllNodes();
for(var i; i < nodes.length; i++)
{
    data.push({id: nodes[i].id, order: i});
}

Для получения дополнительной информации о Dojo DnD относительно представления данных, ознакомьтесь с этой статьей о DnD и отправке формы: http://www.chrisweldon.net/2009/05/09/dojo-drag-n-drop-and-form-submission

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...