防止撤销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。然后就不需要交易了。
在我的应用程序中,用户可以通过单击触发 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。然后就不需要交易了。