我有这个相当长的 pre-AMD 代码,它从dojo.data.ItemFileWriteStore
. 它通常工作正常,但我尝试通过 DnD 实现树节点的复制,但我不确定该过程。
目前,如果我在拖动时按住 Ctrl 将树项目复制到不同的位置,则生成的项目似乎是 100% 相同的项目。含义:如果我然后单击其中任何一个并调用其删除,则两者都会从树中删除。这是点击事件处理程序调用的删除代码:
var item = tree.selectedItem;
var yes = confirm('you sure?');
if (yes) {
var xhrArgs = {
url:"path/to/xhr.php",
handleAs:"text",
preventCache:true,
content:{
action:"delete",
obj:item.name[0],
pages_id:item.pages_id[0]
},
load:function (content, request) {
if (request.xhr.status == 200)
store.deleteItem(item);
}
};
dojo.xhrPost(xhrArgs);
}
pasteItem
当树模型的( dijit.tree.ForestStoreModel
) XHR 回调返回时,我有什么特别需要做的吗?现在我没有对树做任何事情,因为我希望树不会将自己置于无效状态(重复节点)。
dojo.connect(treeModel, 'pasteItem', function(draggedItem, oldParentItem, newParentItem, is_copy, insertIndex) {
var pageID=draggedItem.pages_id, newParentID=newParentItem.pages_id,
pages= dojo.filter(newParentItem.children, function (item) {
return (item.name != 'element');
}), content={
action: "move",
parent: newParentID,
pages_id: pageID
};
content.obj = 'element';
content.elements_id = draggedItem.elements_id;
content.is_copy=is_copy;
content.pos= insertIndex;
var xhrArgs = {
url:"path/to/xhr.php",
handleAs:"json",
content:content,
load: function(result, request){
draggedItem.pages_id = newParentID;
// do I need to do something else here?
},
error:function (ret) { console.error(ret); }
};
dojo.xhrPost(xhrArgs);
});