将 mxCodec 和 mxGraphModel 对象保存到 localStorage

问题描述 投票:0回答:1

我在 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 库函数,一种可以将这些对象转换/编码为字符串的方法,反之亦然,from-string(以便可以使用 localStorage 保存它们)?

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

javascript angularjs mxgraph jgraph
1个回答
0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.