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