Блочные domToWorkspace сбрасывают идентификаторы узлов

Я работаю над редактором кода с использованием blockly, и на моей странице в настоящее время есть вкладки для переключения между Block View и Code View, вроде как некоторые редакторы WYSIWYG. Теперь у Blockly есть много вещей для перехода от блоков к коду, и я выполнил 99% частей, чтобы перейти от кода к блокам (это включает в себя создание блока xml блоков). Мой призыв перейти от представления кода к представлению блока выглядит следующим образом:

var xml = Blockly.Xml.textToDom(self.xmlGenerated());
Blockly.mainWorkspace.clear();
Blockly.Xml.domToWorkspace(Blockly.mainWorkspace, xml);

Проблема заключается в том, что независимо от того, какие атрибуты id я установил в своих узлах xml, они блокируют их, когда я пытаюсь прочитать блочный xml позже. Кажется, они постоянно увеличиваются, хотя я очищаю рабочее пространство. Это вызывает проблему для моей функции автосохранения, поскольку это означает, что каждый раз, когда я перехожу из кода в блоки, меняется мой xml, и, следовательно, мой код меняется (сгенерированный код представляет собой структуру графа, которая также использует поля id для идентификации каждого узла на графике).

Итак, мой вопрос: кто-нибудь знает, как запретить Blockly переопределять отправляемый мной идентификатор узла, или есть способ "сбросить" идентификаторы узла?

1 ответ

Решение

Я задал очень похожий вопрос в группе Blockly Google, а Нил добавил новый data XML-тег для хранения постоянных данных. Может быть, вы можете поставить свой идентификатор там? При чтении кода кажется, что id Атрибут предназначен для внутреннего использования, поэтому его использование может быть ненадежным.

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