Блочные 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
Атрибут предназначен для внутреннего использования, поэтому его использование может быть ненадежным.