防止撤销gojs图片

Prevent undo of gojs picture

在我的应用程序中,用户可以通过单击触发 diagram.commandHandler.undo 的按钮来使用撤消。目前,图像被渲染到 gojs canvas。但是,当我使用撤消时图像消失了。我想阻止用户对其使用撤消。到目前为止,我尝试过的是使用 initiallayoutconpleted 等,但主要用于节点,这不适合我的用例。目前,这就是我在 canvas:

上初始化图像的方式

  diagram.add(GO(go.Part,
      layerName: "Background",
      selectable: false,
      pickable:false,
    }, GO(go.Picture, imagePath, {
      width: 400,
      height: 400,
      imageStretch: go.GraphObject.Uniform,
      imageAlignment: go.Spot.TopLeft
    })));

    diagram.model.commitTransaction("add bg"); ```

大概您之前调用了 startTransaction,是吗?

问题是添加的部分由 UndoManager 记录,因此被撤消或重做。我看你是想暂时把Diagram.skipsUndoManager设置为true,加上背景图片,然后再设置回去。

另一种方法:

myDiagram.commit(d => {
  d.add(...);
}, null);

https://gojs.net/latest/api/symbols/Diagram.html#commit

还有第三种可能性:将零件添加到 "Grid" 层,其中 Layer.isTemporary 为真,因此层中的任何更改都是UndoManager 未记录。 https://gojs.net/latest/api/symbols/Layer.html#isTemporary

所以只需将 layerName 更改为 "Grid"。我想你还需要设置它的Part.position。然后就不需要交易了。