0

次のコードがあります。url.local または url.remote が選択されているかどうかに基づいて、プロキシのタイプと URL プロパティを動的にしたいと思います。

var url = {
    local: './grid-filtering/sample.json',  // static data file
    remote: '/Customer/Get'
};

Ext.require('sbpm.model.Product');
Ext.define('sbpm.store.Customer', {
    extend: 'Ext.data.JsonStore',
    constructor: function (cfg) {
        var me = this;
        cfg = cfg || {};
        me.callParent([Ext.apply({

            // store configs

            autoDestroy: true,
            storeId: 'Customer',
            model: 'sbpm.model.Product',
            proxy: {
                type: 'jsonp',
                url: url.local,
                reader: {
                    root: 'data',
                    totalProperty: 'total'
                }

            },
            remoteSort: false,
            sorters: [{
                property: 'company',
                direction: 'ASC'
            }],
            pageSize: 50
        }), cfg]);
    } 
});

言い換えれば、私がやりたいことは(疑似コードで)指定することです:

if (url.local)
{
 proxy:{
  type: 'jsonp'
  url: url.local,
  // etc
 }

}
else if (url.remote)
{
 proxy:{
  type: 'rest'
  url: url.remote,
  // etc
 }
}

申し訳ありませんが、シナリオをさらに説明するために追加するコンテキストの種類がわかりません。または、stackoverflow が何らかのテキスト/コード比率を使用してそれを測定するだけの場合は、既に説明したことを見て迷惑になります。シナリオは非常に簡潔で、理解できない場合はより詳細な質問をすることができます。

4

1 に答える 1

0

AbstractStoreクラスには 2 つのメソッドsetProxy()/がありgetProxy()ます。それらを使用して、プロキシをオンザフライで切り替えることができます。内部に 2 つの異なるプロキシがあり、再作成せずにそれらを切り替えるなど、さらに何かが必要な場合は、既存のクラスを拡張する必要があるかもしれません。

于 2012-04-16T16:40:02.960 に答える