GGEditor icon indicating copy to clipboard operation
GGEditor copied to clipboard

Mind的复制粘贴功能

Open zhandouxiaojiji opened this issue 4 years ago • 2 comments

这个功能解决了什么问题

我想在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添加子节点。

zhandouxiaojiji avatar Sep 03 '19 03:09 zhandouxiaojiji

写了个小DEMO,报错跟上面的一样 Edit GGEditor - Mind - RegisterNode

zhandouxiaojiji avatar Sep 03 '19 03:09 zhandouxiaojiji

不能用update,得使用read重新读取一下数据

KevinBu avatar Sep 18 '20 03:09 KevinBu