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 被销毁时被调用,你可以在这里进行一些资源回收的工作