如何根据变量的值动态构造ExtJS对象?

时间:2012-04-16 16:06:00

标签: dynamic extjs constructor

我有以下代码。我想根据是否选择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只是使用某种文本/代码比来衡量那个,那会很烦我看到我的已经非常简洁地解释了这个场景,如果他们不理解,人们可以提出更详细的问题。

1 个答案:

答案 0 :(得分:0)

AbstractStore类有两种方法setProxy() / getProxy()。您可以使用它们即时切换代理。如果你需要更多东西 - 比如在里面有两个不同的代理并在它们之间切换而不重新创建 - 你可能需要扩展现有的类。