在dojo拖放之后,一旦提交了页面,我就必须保存已放入“targetZone”的每个项目的位置。我们怎样才能保住这个位置?
答案 0 :(得分:1)
欧根在这里回答: Dojo Drag and drop: how to retrieve order of items?
那将是正确的方式。如果查看上面的链接,可以将生成的“orderedDataItems”对象保存为JSON ...
查看以下功能。它将我们的DND“Lightbox”(dojo.dnd.source)保存为JSON。
E.g。如果您将项目从dijit树中删除到任意dojo dnd源/目标: 我们之前制作的data.item中的_RAM或_S需要被覆盖。
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;
}
答案 1 :(得分:0)
通过调用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