10
我有一個我正在寫的Dojo小部件,它爲用戶的頁面添加了一個標籤和一個輸入框。如何在Dojo小部件模板中創建唯一ID?
label
的for
屬性需要HTML ID值,但Dojo窗口小部件不應包含ID,以防在同一頁面上創建多個實例。
那麼,有沒有人有任何建議如何解決這些衝突的需求?
我有一個我正在寫的Dojo小部件,它爲用戶的頁面添加了一個標籤和一個輸入框。如何在Dojo小部件模板中創建唯一ID?
label
的for
屬性需要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}">';
在你的情況下,如果某個模板你人abel->輸入對,它是這樣的
<div><!--domNode-->
<table>
<td><label for="${id}-edit-title">Title</label></td>
<td><input id="${id}-edit-title" type="text" /></td>
</table>
</div>
所以
Allthough它是一點點過時的時間之中,這是一個非常良好的開端: http://dojotoolkit.org/documentation/tutorials/1.6/templated/
繼續閱讀dojo.Stateful
get/set機制
最後轉到dijit._WidgetsInTemplateMixin
。
只是一個頭:似乎引用模板中的$ {id}是所有需要做的事情。沒有任何額外的代碼沒有任何部件的生命週期方法。 – belzebu
如上所述,'out the box':)第一個代碼塊是dijit.widget將它設置爲id的自動 – mschr