GGEditor
GGEditor copied to clipboard
Mind的复制粘贴功能
这个功能解决了什么问题
我想在Mind中实现类似Flow的复制粘贴功能,我尝试着给当前选中的节点的model的children添加要复制的model,然后使用propsAPI的update更新当前选中的节点,结果报错 Uncaught TypeError: Cannot read property 'getEdges' of undefined 求助大神,代码如下:
execute() {
const selected = getSelected()[0];
const curModel = selected.getModel();
const copiedModel = getCopiedModel();
if (!copiedModel) {
return;
}
const cloneModel = (srcNode: any) => {
const dstNode: any = {}
for (var k in srcNode) {
if (k == 'children') {
dstNode.children = [];
srcNode.children.map((srcChild: any) => {
dstNode.children.push(cloneModel(srcChild))
})
} else if (k != 'id') {
dstNode[k] = srcNode[k];
}
}
return dstNode
}
const newCopiedNode:any = cloneModel(copiedModel);
if (!curModel.children) {
curModel.children = []
}
curModel.children.push(newCopiedNode);
newCopiedNode.parent = curModel.id;
executeCommand(() => {
update(selected, curModel);
});
},
你所期望的 API 是怎样的
类似appendChild这个command,但找到没类似的demo可以参考,不知道具体如何给Mind添加子节点。
不能用update,得使用read重新读取一下数据