1

概要:

次のようなことが可能かどうか知りたいです。

{a: 'A',b: this.a}

{a: 'A',b: self.a}...またはまたはその他のような他のポインターを使用して{a: 'A',b: own.a}...

完全な質問:

Ext.extend を使用して MyBaseModule を拡張しようとしていますが、Ext.extend() に渡された拡張オブジェクトの値を相互参照する必要があります。

まだ MyModule のコンテキストに入っていないため、これを使用してオブジェクトを参照することはできません (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);
4

1 に答える 1

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
    }]
};
于 2010-06-14T12:41:18.667 に答える