Dijit 的類文件
Dijit 的類也是一個 Dojo 類,所以 Dijit 類的聲明和定義也是用 dojo.declare 函數(shù),如清單 10 和清單 13 所示。Dijit 類既然是 Dojo 類,自然也可以繼承其它類或被其它類所繼承。實際上,一個 Dijit 類區(qū)別于其它 Dojo 類最重要的一點是,Dijit 類都直接或間接地繼承于類 dijit._Widget,大部分的 Dijit 類通過 mixin 的方式繼承類 dijit._Templated,如清單 13 中的 [dijit._Widget,dijit._Templated]。
讓我們回過頭來看看清單 13,清單 13 中,有一個屬性叫 templatePath,從名字就可以看出來,這個屬性指定了 template 文件的路徑。除了指定 template 文件的路徑外,也可以直接把 template 變成一個字符串放到類定義文件中,這種情況下,要用到的屬性就是 templateString 了。
除了 templatePath 和 templateString 以外,還有很多擴(kuò)展點可以根據(jù)實際需要重載,這些擴(kuò)展點覆蓋了 dijit 的整個生命周期,具體列舉如下:
constructor:
constructor 會在設(shè)置參數(shù)之前被調(diào)用,可以在這里進(jìn)行一些初始化的工作。Constructor 結(jié)束后,便會開始設(shè)置 Dijit 實例的屬性值,即把 dijit 標(biāo)簽中定義的屬性值賦給 dijit 實例。
postMixInProperties:
如果你在你的 dijit 中重載這個函數(shù),它會在 dijit 展現(xiàn)之前,并且在 dom 節(jié)點生成之前被調(diào)用。如果你需要在 dijit 展現(xiàn)之前,修改實例的屬性,可以在這里實現(xiàn)。
buildRendering:
通常情況下這個函數(shù)你不需要去重載,因為 _Templated 為在這里為你做好所有的事情,包括 dom 節(jié)點的創(chuàng)建,事情的連接,attach point 的設(shè)置。除非你要開發(fā)一套完全不一樣的模板系統(tǒng),否則建議你不要重載這個函數(shù)。
postCreate:
這個函數(shù)會在 dijit 創(chuàng)建之后,子 dijit 創(chuàng)建之前被調(diào)用。
startup:
當(dāng)你需要確保所有的子 dijit 都被創(chuàng)建出來了,你可以調(diào)用這個函數(shù)。
destroy:
會在 dijit 被銷毀時被調(diào)用,你可以在這里進(jìn)行一些資源回收的工作