我正在使用AJAX请求从服务器获取JSON格式的值。但是,当我尝试在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' }
]
});
}}
});
}});
所以我的问题是,如何显示所有检索到的数据?而不是只有1?
发布于 2011-11-10 23:19:09
您是在for循环中创建TabPanel的,该循环为每个数组项创建一个TabPanel,每个TabPanel都有一个列表,该列表绑定到一个具有一条记录的存储。这些都是叠加在一起的,所以你一次只能看到一个。
为了让它快速工作,我将把您的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
})但是,我建议您研究一下如何让您的存储自己加载此数据(通过代理),因为这是最好的方法。
斯图尔特
https://stackoverflow.com/questions/8079981
复制相似问题