如何在Dojo小部件模板中创建唯一ID?

Dan*_*umb 11 dojo widget

我有一个Dojo小部件,我正在写一个标签和一个输入框添加到用户的页面.

a的for属性label需要HTML ID值,但是如果在同一页面上创建多个实例,则Dojo小部件不应包含ID.

那么,有没有人对如何解决这些相互冲突的需求有任何建议?

msc*_*chr 20

在框中,如果构造时配置参数不存在,这就是dijit注册表设置WidgetID(this.id)的方式:

constructor: function(args) { args=args || {};
  this.id = args.id || dijit.registry.getUniqueId(this.declaredClass)
}
Run Code Online (Sandbox Code Playgroud)

模板适用于字符串替换,所以如果你的类中有一个属性,比如说foo,那么将它放入模板的方法就是这样:

templateString = '<div class="${foo}">';
Run Code Online (Sandbox Code Playgroud)

在您的情况下,在模板中的某个位置,您有一个标签 - >输入对,它就像这样

<div><!--domNode-->
   <table>
       <td><label for="${id}-edit-title">Title</label></td>
       <td><input id="${id}-edit-title" type="text" /></td>
   </table>
</div>
Run Code Online (Sandbox Code Playgroud)

所以

虽然它暂时有点过时,但这是一个非常好的起点:http: //dojotoolkit.org/documentation/tutorials/1.6/templated/

继续阅读dojo.Statefulget/set机制

最后转向dijit._WidgetsInTemplateMixin.