我试图用额外的属性扩展dijit.form.Button但这不起作用.下面给出了代码
在file1.js中
dojo.require('dijit.form.Button');
dojo.extend(dijit.form.Button,{xyz: ''});
Run Code Online (Sandbox Code Playgroud)
在file2.jsp中
<script type="text/javascript" src="file1.js"></script>
<div dojoType="dijit.form.Button" xyz="abc"></div>
Run Code Online (Sandbox Code Playgroud)
但是,当我查看创建按钮的HTML时(通过右键单击然后选择'inspect element'选项看到chrome),它不会显示xyz属性.
您需要记住,widget对象及其HTML表示之间存在区别.扩展时dijit.form.Button,xyz属性将添加到窗口小部件类,但不会自动添加到窗口小部件将呈现的HTML中.所以在你的情况下,如果你这样做
console.debug(dijit.byId("yourWidgetId").get("xyz"));
Run Code Online (Sandbox Code Playgroud)
..你会看到按钮对象确实有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);
}
});
Run Code Online (Sandbox Code Playgroud)
如果在HTML中添加新Button类的实例,如下所示:
<div dojoType="my.Button" xyz="foobar" id="mybtn"></div>
Run Code Online (Sandbox Code Playgroud)
..然后HTML表示(在Dojo解析它并使其变成漂亮的小部件之后)将包含xyz属性.可能是这样的:
<span class="..." xyz="foobar" dir="ltr" widgetid="mybtn">
<span class="..." dojoattachevent="ondijitclick:_onButtonClick">
<input class="dijitOffScreen" type="button" dojoattachpoint="valueNode" ...>
</span>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |