Удаление ячейки не работает после загрузки mxGraph с использованием декодирования XML

Я сохраняю свою mxModel в базе данных. После сохранения модели XML-файл mxModel сохраняется в базе данных. Поэтому, когда пользователь хочет отредактировать эту модель, я извлекаю модель и декодирую ее, используя следующий код.

var xmlDocument = mxUtils.parseXml(mxModel);
var decoder = new mxCodec(xmlDocument);
                    
var node = xmlDocument.documentElement;
decoder.decode(node, graph.getModel());
let elt = xmlDocument.documentElement.firstChild;

Помимо этого, у меня есть опции на графике для дальнейшего редактирования графика. Как Добавить, Копировать, Удалить и т.д. Все операции добавления работают нормально, но операции, которые пытаются удалить ячейки, не отображаются на графике в реальном времени.

Так, например, для операции Удалить у меня есть следующий код, ограниченный элементами beginUpdate() и endupdate().

graph.getModel().beginUpdate();
graph.removeCellsFromParent([selectedCell]);
graph.getModel().remove(e[0]);
graph.getModel().remove(selectedCell);
graph.getModel().endUpdate();

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

Мне нужно показать удаление в реальном времени. Не могли бы вы показать какое-то направление для того же.


person Arijit Sil    schedule 03.07.2020    source источник
comment
Я столкнулся с той же проблемой, вы нашли какой-либо ответ, пожалуйста, дайте мне знать   -  person EaB    schedule 23.06.2021


Ответы (1)


у нас есть демонстрация с removeCells В вызове кода graph.removeCells() вы можете увидеть здесь.

Если это вам не поможет, пожалуйста, создайте онлайн-демонстрацию (codePen и т. д.) с проблемами и напишите здесь.

person Bohdan Skochko    schedule 06.07.2020
comment
Как я уже упоминал, graph.removeCells() работает только тогда, когда ячейка создается с помощью graph.insertvertex(), но в моем случае я загружаю ее через декодер кодека, и в этом случае он не отображает изменения после выполнения graph.removeCells( ). - person Arijit Sil; 07.07.2020