我在使用 DOJO 时遇到问题,我将动态加载包含某些内容的 div,然后运行 parser.parse(dom.byId("mainDiv"));与各自的要求。第一次效果很好。然而,第二次我最终遇到了一个问题,它只是显示不再激活或样式化的内容。
在第二次运行时,我所做的就是删除 div 中的所有 html,然后用基本的未解析文本替换 html,然后再次解析它。现在我猜测它必须与 dijit.registry 做一些事情,但是我无法确切地找到问题所在,因为我也尝试清除该问题但无济于事。我们将非常感谢您的帮助。
最佳答案
Dojo 跟踪它通过指定 ID 创建的对象/小部件。如果您在具有相同 id 的对象上再次运行解析器,dojo 会尝试创建第二个实例,但已经有一个实例,因此它应该在您的 js 控制台中抛出错误(请检查)。
您可以将 id 留空,然后 dojo/parse 应该为您创建一个 id。 Dojo 允许您通过类属性查找 dom 元素,这样您就可以将 div 元素传递给 parse() 函数,而无需为其提供显式 id。
另一种方法是在再次解析 div 元素之前销毁创建的小部件/对象,请查看此处:
Dojo and unregistering widgets
引自http://livedocs.dojotoolkit.org/dojo/parser#parse
"If you try to parse the same content twice, or parse content mentioning id's of existing widgets, it will cause an exception about duplicate id's"
关于javascript - DOJO 和 DIJIT 无法解析相同的 ID 两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15888832/