0

我在 Angular Web 应用程序中使用 mxGraph,它可以在保存 mxGraph 图形的不同页面之间切换。

显示当前绘图的组件使用 mxGraphModel 和 mxCodec 对象作为属性。需要保存mxGraphModelmxCodec对象:

let m: mxGraphModel;
let c: mxCodec; // they are initialized inside the application

使用众所周知的命令进入 localStorage:

localStorage.setItem('MX_GRAPH_MODEL', m);
localStorage.setItem('MX_CODEC',  c);

以便可以在页面刷新时检索它们。

mc变量用作 Angular 组件的属性,它们包含图形信息和样式,因此每次刷新页面时都会重新加载,这是我需要通过将其最后一个版本保存为本地存储来避免的。

现在我知道上述命令将不起作用,并且通过 JSON 对它们进行字符串化也不起作用:

localStorage.setItem('MX_GRAPH_MODEL', JSON.stringify(m));
localStorage.setItem('MX_CODEC',  JSON.stringify(c));

问题:是否有 mxGraph 库函数,一种可以将这些对象转换/编码为字符串的方法,反之亦然,从字符串(以便可以使用 localStorage 保存它们)?

如果不是,那么保存 mxGraph 对象以避免在页面刷新时更改它们的适当方法是什么。我在 Angular 中使用单例类来保留它们,这对于在页面之间切换是可以的,但是,一旦调用刷新,所有类(包括单例)都会再次构造,并且我当前的图形绘制丢失了。

4

1 回答 1

0

看看提供的示例的 getGraphXml() 函数,你将把你的模型作为一个字符串,可以存储在我猜的任何地方

于 2017-11-22T17:42:17.317 回答