我的脚本问题让我可以将节点从一个树复制到另一个树,保留文件夹的结构。
这是用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。
不确定这是否是最好的方法,但它确实有效。