#sencha-touch #extjs
#sencha-touch #extjs
Вопрос:
я использую AJAX-запрос для получения значения с сервера в формате JSON. но когда я пытаюсь показать это в Ext.В списке отображается только 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?
Ответ №1:
Вы создаете свою панель вкладок внутри цикла for, который создает одну панель вкладок для каждого элемента массива, причем каждая панель вкладок имеет список, привязанный к хранилищу с одной записью. Все они расположены друг над другом, поэтому вы видите только одно за раз.
Чтобы это работало быстро, я бы вынес ваше создание TabPanel за пределы цикла for и создал в нем ваш набор данных:
var dataArray = [];
for (var i = 0; i < count; i ) {
name = posts.data[i].name;
dataArray.push({
firstName: name,
lastName: ''
});
}
Затем вы можете передать этот массив данных в свое хранилище:
new Ext.data.JsonStore({
model: 'Contact',
sorters: 'firstName',
getGroupString: function (record) {
return record.get('firstName');
},
data: dataArray
})
Однако я бы посоветовал вам изучить, как заставить ваши хранилища загружать эти данные самостоятельно (через прокси), поскольку это лучший способ сделать это.
Стюарт