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

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

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

【问题讨论】:

    标签: javascript dynamic dojo


    【解决方案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”

    【讨论】:

    • 对,我理解但是我想知道如何做“另一种方法是销毁创建的小部件/对象”
    • 我为此添加了指向我原来答案的链接
    • 非常感谢,这很有帮助。这是我在搜索过程中丢失的注册词哈哈。
    • 哈哈非常感谢,虽然这正是我所需要的。
    猜你喜欢
    • 2018-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多