我正在编写一个Dojo小部件,它会在用户页面上添加一个标签和一个输入框。
for
的{{1}}属性需要HTML ID值,但如果在同一页面上创建了多个实例,则Dojo小部件不应包含ID。
那么,是否有人就如何解决这些相互冲突的需求提出任何建议?
答案 0 :(得分:20)
在框中,如果构造时配置参数不存在,这就是dijit注册表设置WidgetID(this.id)的方式:
constructor: function(args) { args=args || {};
this.id = args.id || dijit.registry.getUniqueId(this.declaredClass)
}
模板适用于字符串替换,因此如果您的类中有属性,例如 foo ,则将此放入模板的方式如下:
templateString = '<div class="${foo}">';
在你的情况下,模板中的某个地方你有一个label-&gt;输入对,就像这样
<div><!--domNode-->
<table>
<td><label for="${id}-edit-title">Title</label></td>
<td><input id="${id}-edit-title" type="text" /></td>
</table>
</div>
所以
虽然暂时有点过时,但这是一个非常好的起点: http://dojotoolkit.org/documentation/tutorials/1.6/templated/
继续阅读dojo.Stateful
获取/设置机制
最后转向dijit._WidgetsInTemplateMixin
。