我想知道是否可以这样做:
{a: 'A',b: this.a}
...使用其他指针,例如{a: 'A',b: self.a}
或{a: 'A',b: own.a}
或其他任何内容......
我正在尝试使用Ext.extend扩展MyBaseModule,并且需要交叉引用传递给Ext.extend()的扩展对象中的值。
由于我还没有MyModule的上下文,我无法使用 this 来引用该对象(参见第12行下面的示例)。有没有其他方法可以在不先创建对象的情况下引用这样的值?
1 MyModule = Ext.extend(MyBaseModule, {
2 dataStores: {
3 myDataStore: new Ext.data.Store({...})
4 },
5
6 myGridDefinition: {
7 id: 'myGridDefinitionPanel',
8 bodyBorder: false,
9 items: [{
10 xtype: 'grid',
11 id: 'myGridDefinitionGrid',
12 store: this.dataStores.myDataStore
13 }]
14 }
15 });
或以下是唯一的解决方案? 我希望尽可能避免这种情况,因为我发现大型扩展定义的可读性较差。
1 var extensionObject = {
2 dataStores: {
3 myDataStore: new Ext.data.Store({...})
4 },
5
6 myGridDefinition: {
7 id: 'myGridDefinitionPanel',
8 bodyBorder: false,
9 items: [{
10 xtype: 'grid',
11 id: 'myGridDefinitionGrid'
12 }]
13 }
14 };
15
16 extensionObject.locationsGrid.items[0].store = extensionObject.dataStores.locations;
17
18 MyModule = Ext.extend(MyBaseModule, extensionObject);
答案 0 :(得分:1)
您可以逐步构建对象:
var dataStores = {
myDataStore: new Ext.data.Store({...})
};
var extensionObject = {
dataStores: dataStores,
myGridDefinition: {
id: 'myGridDefinitionPanel',
bodyBorder: false,
items: [{
xtype: 'grid',
id: 'myGridDefinitionGrid',
store: dataStores.myDataStore
}]
}
};
另一种方法:
var extensionObject = {
dataStores: {
myDataStore: new Ext.data.Store({...})
}
};
extensionObject.myGridDefinition = {
id: 'myGridDefinitionPanel',
bodyBorder: false,
items: [{
xtype: 'grid',
id: 'myGridDefinitionGrid',
store: extensionObject.dataStores.myDataStore
}]
};