2011-11-10 14 views
0

即時通訊使用AJAX請求以JSON格式從服務器獲取值。 但是當我嘗試在Ext.List中顯示此值時,只顯示1個值而不是全部。Ext.List僅顯示1個值,而不是全部

Ext.setup({ 
onReady: function() { 

    Ext.regModel('Contact', { 
     fields: ['firstName', 'lastName'] 
    }); 
      var posts; 
      var count; 
      var name = 'sdf'; 
     Ext.Ajax.request({ 
        url: 'a.php/pool/listPools', 
        method: 'post', 
        type:'json', 
        success: function(response){ 
          posts = Ext.decode(response.responseText); 
          alert(response.responseText); 
          count = posts.count; 
          for (var i = 0; i < count; i++) { 
          name = posts.data[i].name; 
          alert(name); 
          var btnContact = new Ext.TabPanel({ 
     fullscreen: true, 
     items: [ new Ext.List({ 
          itemTpl:'', 
      title: 'My Tab', 
      tpl: '<tpl for="."><div class="contact"><strong>{firstName}</strong> {lastName}</div></tpl>', 
      itemSelector: 'div.contact', 
      singleSelect: true, 
      grouped: true, 
      indexBar: false, 


      store: new Ext.data.JsonStore({ 
       model: 'Contact', 
       sorters: 'firstName', 

       getGroupString: function (record) { 
        return record.get('firstName'); 
       }, 
       data: [ 
        { 
               firstName: name, 
               lastName: '' 
              } 
       ] 
      }) 
     }), 
        //{ title: 'Tab 2' } 
       ] 
        }); 

       }}    
      }); 

} 

});

Sooo我的問題是,我怎樣才能顯示所有檢索到的數據?而不是1?

回答

1

您正在for循環中創建TabPanel,該循環爲每個數組項目創建一個TabPanel,每個TabPanel將一個List綁定到具有單個記錄的商店。這些都在彼此之上,所以你一次只能看到一個。

爲了得到這個快速的工作,我會拿你的TabPanel創作外的for循環,並建立在它的數據集:

var dataArray = []; 
for (var i = 0; i < count; i++) { 
    name = posts.data[i].name; 

    dataArray.push({ 
        firstName: name, 
        lastName: '' 
       }); 
} 

可以將此dataArray中,然後傳遞到你的店:

new Ext.data.JsonStore({ 
      model: 'Contact', 
      sorters: 'firstName', 

      getGroupString: function (record) { 
       return record.get('firstName'); 
      }, 
      data: dataArray 
     }) 

但是,我會建議你看看如何讓你的商店自己加載這些數據(通過代理),因爲這是最好的方式。

斯圖爾特

相關問題