Сохранение объектов 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() из представленных примеров, у вас будет ваша модель в виде строки, которую я могу хранить где угодно