放在dijit.tree上的项目不是唯一的吗?

时间:2018-06-20 11:54:21

标签: javascript dojo dijit.tree

我有一段相当长的AMD之前的代码,该代码从dojo.data.ItemFileWriteStore创建了dijit.tree。总体上它可以正常工作,但是我尝试通过DnD实现树节点的复制,我不确定该过程。

当前,如果在拖动时按住Ctrl键将树项目复制到其他位置,则结果项似乎是100%相同的。含义:如果我随后单击它们之一并调用其删除,则两者都将从树中删除。这是click事件处理程序调用的删除代码:

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);
}

当树模型的pasteItemdijit.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);
});

0 个答案:

没有答案