0

変数を extended に渡すにはどうすればよいですか。Ext.tree.Panelこれにより、 custom が渡されますExt.data.Store

これが私のコードです:

Ext.define('CustomStore', {
    extend: 'Ext.data.TreeStore',
    alias: 'widget.customstore',
    folderSort : true,
    model : 'TreeNode',
    autoLoad: true,
    config: {
        customParam: 'defaultVal'
    },
    ...
    proxy: {
        url: '/some/url?param'+this.customParam,
        ...
    }
});
Ext.define('CustomTree', {
    extend: 'Ext.tree.Panel',
    alias: 'widget.customtree',
    config: {
        customParam2: 'defaultVal'
    },
    store: new CustomStore({customParam: this.customParam2'}),
    ...
});

var tree = Ext.create('CustomTree', {customParam2: 'someVal'});

ご覧のとおり、値someValをツリーに渡したいのですが、ツリーはそれをストアに渡す必要があります。ストアのプロキシはそれを取得してロード URL で使用する必要があります。

configinitConfig、 などconstructor、多くのことを試しましinitComponentたが、良い結果は得られませんでした。

4

1 に答える 1

1

適切な材料を手に入れましたが、正しい順序で混ぜていません。

ここでの問題は、ストア作成コード:

new CustomStore({customParam: this.customParam2'})

の定義のに呼び出されますCustomTree:

Ext.define('CustomTree', ...)

これは、が関数new CustomStore(...)の引数として使用されているためですdefine。したがって、明らかに、次の値を設定する行の前にも呼び出されますcustomParam2

var tree = Ext.create('CustomTree', {customParam2: 'someVal'});

したがって、それを機能させるには、のコンストラクターCustomTreeが呼び出されたときにストアを作成する必要があります。initComponentただし、コンポーネントを操作する場合は、コンストラクターではなくオーバーライドすることをお勧めします。したがって、これを行う方法は次のとおりです。

Ext.define('CustomTree', {
    extend: 'Ext.tree.Panel',
    alias: 'widget.customtree',
    config: {
        customParam2: 'defaultVal'
    },
    // remove that
    // store: new CustomStore({customParam: this.customParam2'});

    // ... and put it in there:
    initComponent: function() {

        // creates the store after construct
        this.store = new CustomStore({customParam: this.customParam2});

        // call the superclass method *after* we created the store
        this.callParent(arguments);
    }
    ...
});

に関してはinitConfig、構成パラメーターを適用するには、コンストラクターで呼び出す必要があります。しかし、あなたの場合、 and から拡張してExt.data.StoreおりExt.tree.Panel、それらのコンストラクターは既にそれを呼び出しているため、自分で行う必要はありません。

于 2013-05-24T14:07:38.397 に答える