2011-11-10 18 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 
     }) 

但是,我会建议你看看如何让你的商店自己加载这些数据(通过代理),因为这是最好的方式。

斯图尔特

相关问题