gpt4 book ai didi

dojo - 如何扩展 dijit.form.button

转载 作者:行者123 更新时间:2023-12-03 22:24:49 35 4
gpt4 key购买 nike

我正在尝试用一个额外的属性扩展 dijit.form.Button 但这不起作用。代码在下面给出

在 file1.js 中

dojo.require('dijit.form.Button');
dojo.extend(dijit.form.Button,{xyz: ''});

在 file2.jsp 中

<script type="text/javascript" src="file1.js"></script>
<div dojoType="dijit.form.Button" xyz="abc"></div>

但是,当我查看创建的按钮的 HTML 时(在 chrome 中右键单击然后选择“检查元素”选项),它不显示 xyz 属性。

最佳答案

您需要记住,小部件对象与其 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 表示(在 Dojo 解析它并将其变成一个漂亮的小部件之后)将包含 xyz 属性。大概是这样的:

<span class="..." xyz="foobar" dir="ltr" widgetid="mybtn">
<span class="..." dojoattachevent="ondijitclick:_onButtonClick">
<input class="dijitOffScreen" type="button" dojoattachpoint="valueNode" ...>
</span>

关于dojo - 如何扩展 dijit.form.button,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606782/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com