将节点从TreePanel复制到TreePanel以保持结构

时间:2016-07-18 16:42:33

标签: javascript extjs tree extjs6

我的脚本问题让我可以将节点从一个树复制到另一个树,保留文件夹的结构。

这是用extjs 6.0编写的脚本 https://fiddle.sencha.com/#fiddle/1dr0

我能够从源代码树重构结构,但不幸的是复制的元素是重复的,我不知道如何处理它。我不确定我这样做的方式是否正确所以任何提示都会有所帮助。

主要逻辑在这里:

beforedrop: function (node, data, overModel, dropPosition, dropFunction, eOpts) {
    eOpts.trackedParentsNodeList = [];
    createParentList(data.records[0], eOpts.trackedParentsNodeList);

    var currentNode = node;
    for (var i = eOpts.trackedParentsNodeList.length - 1; i >= 0; i--) {
        var newNode = createCloneNode(eOpts.trackedParentsNodeList[i]);
        currentNode.appendChild(newNode);
        currentNode = currentNode.lastChild;
    }
}

在这里

createParentList = function(data, result){
    result.push(data);
    if(data.parentNode && data.parentNode.id !== "root")
        createParentList(data.parentNode, result);
    else return false;
}

createCloneNode = function(node){
    return {
        "text": node.data.text,
        "leaf": node.isLeaf(),
        "expanded": node.isExpanded()
    };
}

好的,所以我设法解决了这个问题,这是解决方案 https://fiddle.sencha.com/#fiddle/1dr0

不确定这是否是最好的方法,但它确实有效。

0 个答案:

没有答案