2013-06-24 127 views
1

我想爲組合框創建一個通用的Extjs存儲。如何創建一個通用的ExtJS組合框存儲?

商店應能:

  1. 以一個URL
  2. 使用代理從服務器讀取數據
  3. 應該對任何模型工作

我怎樣才能做到這一點?

這是我有始:

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

使用ExtJS 4.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 
        }; 
       } 
      } 
     } 
    }); 
} 
相關問題