您需要注意的是,控件對象與其HTML表示之間存在區別。當您擴展dijit.form.Button
時,xyz屬性會添加到窗口小部件類中,但不會自動添加到窗口小部件將呈現的HTML中。所以你的情況,如果你做
console.debug(dijit.byId("yourWidgetId").get("xyz"));
..你會看到按鈕對象確實有XYZ成員,但HTML(就像你所指出的)沒有。
如果您還希望它在HTML中可見,則必須手動將其添加到按鈕的HTML呈現中。一種方法是將子類dijit.form.Button
並覆蓋buildRendering
方法。
dojo.declare("my.Button", dijit.form.Button, {
xyz: '',
buildRendering: function() {
this.inherited(arguments);
this.domNode.setAttribute("xyz", this.xyz);
}
});
如果在HTML添加新的Button類的實例,比如:
<div dojoType="my.Button" xyz="foobar" id="mybtn"></div>
..然後HTML表示(道場解析了它,並把它做成了好看的後小部件)將包含xyz屬性。可能是這樣的:
<span class="..." xyz="foobar" dir="ltr" widgetid="mybtn">
<span class="..." dojoattachevent="ondijitclick:_onButtonClick">
<input class="dijitOffScreen" type="button" dojoattachpoint="valueNode" ...>
</span>