11

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

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

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

4

1 回答 1

21

开箱即用,如果在构建时配置参数不存在,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.Statefulget/set 机制

最后转向dijit._WidgetsInTemplateMixin

于 2012-06-25T03:45:12.380 回答