Сохранение объектов mxCodec и mxGraphModel в localStorage

Я использую mxGraph в веб-приложении Angular, которое может переключаться между различными страницами, где хранятся рисунки mxGraph.

Компонент, отображающий текущий чертеж, использует объекты mxGraphModel и mxCodec в качестве свойств. Необходимо сохранить объекты mxGraphModel и mxCodec:

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

в localStorage с помощью хорошо известных команд:

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

чтобы их можно было получить при обновлении страницы.

Переменныеm и c используются в качестве свойств компонента Angular, они содержат графическую информацию и стили и поэтому перезагружаются при каждом обновлении страницы, чего мне следует избегать, сохраняя их последнюю версию в качестве локального хранилища.

Теперь я знаю, что вышеупомянутые команды не будут работать, а также их строковое преобразование через JSON также не будет работать:

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

Вопрос: есть ли функция библиотеки mxGraph, метод, который может преобразовывать / кодировать эти объекты в строку и наоборот из строки (чтобы их можно было сохранить с помощью localStorage)?

Если нет, то каков будет подходящий способ сохранить объекты mxGraph, чтобы избежать их изменения при обновлении страницы. Я использую синглтон-класс в Angular, чтобы сохранить их, что нормально для переключения между страницами, однако, когда вызывается обновление, все классы (включая синглтон) создаются снова, и мой текущий чертеж графика теряется.

1 ответ

Взгляните на функции getGraphXml() из представленных примеров, у вас будет ваша модель в виде строки, которую я могу хранить где угодно

Другие вопросы по тегам