id和数据dojo id之间的差异

id和数据dojo id之间的差异,dojo,Dojo,dojo标记中的id和数据dojo id之间有什么区别,例如: <button id="save" data-dojo-type="dijit/form/Button" type="button" data-dojo-attach-event="onClick:save">Save</button> 保存 我尝试引用此按钮以更改其标签: var myButton=dijit.byId(“保存”); 这样我就可以更改按钮标签了 myButton.set(“标签”、“添加

dojo标记中的id和数据dojo id之间有什么区别,例如:

<button id="save" data-dojo-type="dijit/form/Button" type="button" data-dojo-attach-event="onClick:save">Save</button>
保存
我尝试引用此按钮以更改其标签: var myButton=dijit.byId(“保存”); 这样我就可以更改按钮标签了 myButton.set(“标签”、“添加新”)

如果我使用id=“save”,它可以工作。如果我只使用数据dojo id=“save”,它将不起作用


我对Dojo还比较陌生,所以如果您能给我一个解释或指导,我将不胜感激

数据dojo id
将小部件分配到全局名称空间,即分配到
窗口
对象:

<button data-dojo-id="save" data-dojo-type="dijit/form/Button">Save</button>​
请参见JSFIDLE的操作差异:

编辑:回答您的问题。我根本不使用
数据dojo id
。它污染了全局名称空间,这与AMD的做法正好相反。无论如何,您仍然可以使用类似于
小部件的东西。保存
小部件。重命名
以最大限度地减少污染:

<button data-dojo-id="widgets.save" data-dojo-type="dijit/form/Button">Save</button>​
<button data-dojo-id="widgets.rename" data-dojo-type="dijit/form/Button">Rename</button>​

我把整个班级都放在这里:。我使用这个
app.ui.\u Pane
而不是
dijit/layout/ContentPane

谢谢!仅使用id属性需要使用byId方法来获取DOM挂钩。现在,我想知道在创建多个实例的Dojo模块中使用哪个更好。data dojo id是否负责对其进行内部管理,以避免将一个实例标识与另一个实例标识混淆?
<button data-dojo-id="widgets.save" data-dojo-type="dijit/form/Button">Save</button>​
<button data-dojo-id="widgets.rename" data-dojo-type="dijit/form/Button">Rename</button>​
_attachTemplateWidgets: function(widgets) {
    widgets = widgets || this.getChildren();
    for(var each = 0; each < widgets.length; each++) {
        var widget = widgets[each];
        var attachPoint = widget.params.dojoAttachPoint;
        if(attachPoint) {
            this.widget[attachPoint] = widget;
        }

        var children = widget.getChildren();
        if(children.length > 0) {
           this._attachTemplateWidgets(children);
        }
    }
}