我有一个正在编写的 Dojo 小部件,它向用户页面添加标签和输入框。
a的for
属性label
需要 HTML ID 值,但 Dojo 小部件不应包含 ID,以防在同一页面上创建多个实例。
那么,有人对如何解决这些相互冲突的需求有任何建议吗?
开箱即用,如果在构建时配置参数不存在,dijit 注册表设置 WidgetID (this.id) 的方式如下:
constructor: function(args) { args=args || {};
this.id = args.id || dijit.registry.getUniqueId(this.declaredClass)
}
模板适用于字符串替换,所以如果你的类中有一个属性,比如foo,将它放入模板的方法如下:
templateString = '<div class="${foo}">';
在您的情况下,模板中某处有一个标签->输入对,它是这样的
<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
get/set 机制
最后转向dijit._WidgetsInTemplateMixin
。