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

时间:2012-06-24 23:51:28

标签: dojo widget

我正在编写一个Dojo小部件,它会在用户页面上添加一个标签和一个输入框。

for的{​​{1}}属性需要HTML ID值,但如果在同一页面上创建了多个实例,则Dojo小部件不应包含ID。

那么,是否有人就如何解决这些相互冲突的需求提出任何建议?

1 个答案:

答案 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