2013-08-27 14 views
3

這是我從服務器返回的JSON數據。我沒有看到我的組合裝載。這裏有什麼問題?分機Js:如何從列表中加載商店<String>

{"suffixList":["-1","-2","-3"]} 

型號:

Ext.define('ExtMVC.model.Suffix', { 
    extend: 'Ext.data.Model', 
    fields: [ 
     {name: 'suffix'} 
    ] 
}); 

商店:

Ext.define('ExtMVC.store.Suffixes', { 
     extend: 'Ext.data.Store', 
     model: 'ExtMVC.model.Suffix', 
     autoLoad : false, 
     proxy: { 
      type: 'ajax', 
      url: 'http://'+window.location.host+'/populateCombo', 
      reader: { 
       type: 'json', 
       root: 'suffixList' 
      } 
     } 
    }); 

查看:

{ 
       xtype:'combo', 
       id: 'suffix', 
       name: 'suffix', 
       store : 'Suffixes', 
       displayField: 'suffix', 
       valueField: 'suffix' 
      } 

回答

0

數據格式不正確。每條記錄都應該是一個對象,具有商店字段的屬性。在你的情況下,數據應該是這樣的:

{"suffixList":[{"suffix": "-1"},{"suffix": "-2"},{"suffix": "-3"}]} 
+0

我不能在這種格式獲取數據。有沒有辦法改變ExtJs模型和商店定義的方式讀取數據成功? – hop

+0

如果有,我不知道它。它可能並不理想,但是如果不控制服務器的響應格式,你總是可以使用'Ext.Ajax.request()'進行ajax調用,並使用'store.loadData(myArray.map(function(x){return {後綴:x}}));'在數組結果上。 – kevhender

1

您可以使用ArrayStore

new Ext.data.ArrayStore({ 
    fields: ['suffix'], 
    data: {suffixList: ['-1', '-2', '-3']}, 
    proxy: { 
     type:'memory', //'ajax' 
     reader: { 
      type: 'array', 
      root: 'suffixList' 
     } 
    } 
})