1

我想为组合框创建一个通用的 Extjs 存储。

商店应该能够:

  1. 取一个网址
  2. 使用代理从服务器读取数据
  3. 应该适用于任何型号

我怎样才能做到这一点?

这就是我要开始的:

Ext.create('Ext.data.Store', {
    proxy: {
        type: 'ajax',
        url: rawURL,
        reader: {
            type: 'json'
        }
    }
})

使用ExtJS 4.1

4

1 回答 1

1
function getGenericStore(storeURL, valField, dispField) {
    var modelName = 'Model' + me.id;
    var model = Ext.define(modelName, {
        extend: 'Ext.data.Model',
        fields: [
            {name: valField, type: 'string'},
            {name: dispField, type: 'string'}
        ]
    });    
    return Ext.create('Ext.data.Store', {
        proxy: {
            type: 'ajax',
            model: model,
            url: storeURL,
            reader: {
                type: 'json',
                read: function(response) {
                    var json = Ext.decode(response.responseText);
                    var records = [];
                    Ext.each(json, function(item) {
                        var record = Ext.create(modelName);
                        record.set(val, item[val]);
                        record.set(display, item[display]);
                        records.push(record);
                    });

                    return {
                        success: true,
                        total: json.length,
                        count: records.length,
                        loaded: true,
                        records: records
                    };
                }
            }
        }
    });
}
于 2013-06-24T16:11:57.637 回答