0

我在使用 DOJO 时遇到问题,我将动态加载包含一些内容的 div,然后运行 ​​parser.parse(dom.byId("mainDiv")); 与各自的要求。第一次效果很好。但是第二次我最终遇到了一个问题,它只是显示不再激活或样式化的内容。

在第二次运行时,我所做的是删除 div 中的所有 html,然后用基本的未解析文本替换 html,然后我再次解析它。现在我猜测它必须与 dijit.registry 做一些事情,但是我无法确切找到问题所在,因为我尝试清除它也无济于事。您的帮助将不胜感激。

4

1 回答 1

3

Dojo 通过指定的 id 跟踪它创建的对象/小部件。如果您再次对具有相同 id 的对象运行解析器,dojo 会尝试创建第二个实例,但已经有一个,因此它应该在您的 js 控制台中抛出错误(请检查)。

您可以将 id 留空,然后 dojo / parse 应该为您创建一个 id。Dojo 允许您通过类属性查找 dom 元素,这样您就可以将 div 元素传递给 parse() 函数,而无需为其指定显式 id。

另一种方法是在再次解析 div 元素之前销毁创建的小部件/对象,请看这里:

Dojo 和注销小部件

引自http://livedocs.dojotoolkit.org/dojo/parser#parse

“如果您尝试两次解析相同的内容,或者解析提及现有小部件的 id 的内容,则会导致重复 id 的异常”

于 2013-04-08T21:45:38.023 回答