DOJO 和 DIJIT 不能两次解析同一个 ID?

Posted

技术标签:

【中文标题】DOJO 和 DIJIT 不能两次解析同一个 ID?【英文标题】:DOJO and DIJIT can not parse same ID twice? 【发布时间】:2013-04-08 20:57:59 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

对,我理解但是我想知道如何做“另一种方法是销毁创建的小部件/对象” 我为此添加了指向我原来答案的链接 非常感谢,这很有帮助。这是我在搜索过程中丢失的注册词哈哈。 哈哈非常感谢,虽然这正是我所需要的。

以上是关于DOJO 和 DIJIT 不能两次解析同一个 ID?的主要内容,如果未能解决你的问题,请参考以下文章

dijit.form.ValidationTextBox 调用验证器函数两次 onBlur

dojo.byId() 有效,但 dijit.byId() 无效

Dojo - Dijit.Tree - 更新树

Dojo/Dijit - 如何在布局控件上允许垂直滚动

Dojo:无法停止“onClick”dijit 事件

在dijit的图标按钮的点击加载的dijit日历的具体日期禁用