hyn*_*nek 23 javascript extjs extjs4
我正在使用ExtJS的新MVC时尚编写所有组件Ext.define().
无论是在内部定义属性initComponent()还是简单地设置它们,我都有点挣扎property: 42,.
是否有广泛接受的最佳做法?
我initComponent()只是在必要时使用(即,当我想要一些动态或设置范围时),这使得保持功能更短并且让我有些丑陋this.并且总是使用它有利于我,我永远不必移动以前的属性initComponent()只是因为我想让它更具动感.
不幸的是,Sencha的文档并没有说明这一点,可用的例子似乎按照他们的意愿去做.
Lio*_*han 18
个人练习时,我会在属性区域中声明变量
x,y,width,heighttitle,saveBtnTxt,url,fields,iconCls然后我将宣布items,listeners,this.on,Ext.apply(me, {..})或任何需要的OBJ(范围this,me),坐我的里面initComponent.或者在设置一切之前应该修改/覆盖的东西,这样用户就不会通过覆盖一些重要的变量来破坏我的组件.
当然,这将作为我的指导.2美分
编辑
关于丑陋this,我已经me在我的应用程序中广泛使用了变量,它看起来比干净得多this.它也有助于我减少更少的范围.
Mol*_*Man 11
我想补充Lionel的答案,最好在中声明任何非原始配置initComponent.(原语我指的是字符串,布尔值和数字).数组和对象进入initComponent.
所以定义应该如下所示:
Ext.define('My.NewClass', {
extend: 'OldClass',
// here all primitive configs:
cls: 'x-my-cls',
collapsible: true,
region: 'west',
// and so on ...
initComponent: function() {
// here you declare non-primitive configs:
this.tbar = [/* blah-blah */];
this.columns = [/* blah-blah */];
this.viewConfig = {/* blah-blah */};
// and so on ...
this.callParent(arguments);
}
// other stuff
}
Run Code Online (Sandbox Code Playgroud)
您应该将所有非原始配置放入initComponent的原因是所有实例的配置都将引用相同的对象.例如,如果您定义NewClass,如:
Ext.define('My.NewClass', {
extend: 'OldClass',
bbar: Ext.create('Ext.toolbar.Toolbar', {
// ...
Run Code Online (Sandbox Code Playgroud)
bbar所有实例的s都将引用同一个对象.因此,每次创建新实例时,bbar都会从preveous实例中消失.
| 归档时间: |
|
| 查看次数: |
13648 次 |
| 最近记录: |