Ext 关于initConponent
下面的模板(基于Jozef Sakalos在mjlecomte's帖子中的回复)可作为扩展Ext.Component的起点。
01.MyComponent = Ext.extend(Ext.some.component, {02. //缺省构造参数,可被自定义设置覆盖03. propA: 1,04. 05. initComponent: function(){06. //在组件初始化期间调用的代码07. 08. //因为配置对象应用到了“this”,所以属性可以在这里被覆盖,或者添加新的属性09. //(如items,tools,buttons)10. Ext.apply(this, {11. propA: 312. });13. 14. //调用父类代码之前 15. 16. //调用父类构造函数(必须)17. MyComponent.superclass.initComponent.apply(this, arguments);18. 19. //调用父类代码之后20. //如:设置事件处理和渲染组件21. },22. 23. //覆盖其他父类方法24. onRender: function(){25. 26. //调用父类代码之前27. 28. //调用父类相应方法(必须)29. MyScope.superclass.onRender.apply(this, arguments);30. 31. //调用父类代码之后32. 33. }34.});35. 36.//注册成xtype以便能够延迟加载37.Ext.reg('mycomponentxtype', MyComponent);
上面是一个启发例子,如果你用以下任意例子创建以上代码的实例 :
1.var myComponent = new MyComponent({2. propA: 23.});4.//或者延迟加载:5.{..6. items: {xtype: 'mycomponentxtype', propA: 2}7...}
属性propA将被设置3次,按顺序分别是1,2,3 。通过跟踪代码(和注释) ,你会发现初始值为1(构造缺省),然后通过用户配置对象设置为2,最后在initComponent方法中被覆盖设置成3.希望这个例子能让你稍微明白代码执行的顺序(而不是按照你读代码的顺序!)。
浙公网安备 33010602011771号