Blockly domToWorkspace重置节点ID

时间:2014-12-15 18:47:53

标签: javascript blockly

我正在使用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);

问题是,无论我在xml节点中设置了什么id属性,当我尝试稍后读取块xml时,都会阻塞它们。即使我正在清理工作区,它们似乎也在不断增加。这会导致我的自动保存功能出现问题,因为这意味着每次我从代码转到块时我的xml都在变化,因此我的代码正在发生变化(生成的代码是一个图形结构,它也使用id字段来标识每个节点在图中)。

所以,我的问题是,有没有人知道如何防止Blockly覆盖我发送的节点ID,或者有没有办法重置"节点ID?

1 个答案:

答案 0 :(得分:2)

我在Blockly Google小组中提出了一个非常类似的问题,Neil添加了一个用于存储持久数据的新data XML标记。也许你可以把你的身份证放在那里?从阅读代码看起来id属性似乎是供内部使用的,因此重用它可能是不可靠的。