В Sencha Touch мне часто требуется панель Ext.DataView, которая содержит небольшие записи подмножества или даже одну запись из коллекции в магазине.
Например, у меня может быть модельдля Car
, у которого в магазине app.stores.cars
есть тысячи записей о машинах, но я хочу показать меньшее подмножество этих предметов (скажем, только спортивные автомобили ) в моем спискеOfSportsCars DataView
, а также показатьБольшая комплектация автомобилей в моем спискеOfCars DataView
.
Моя первая думала использовать несколько магазинов.Таким образом, у меня будет один главный магазин для большого списка всех автомобилей и второй магазин с фильтром для моей подгруппы спортивных автомобилей.Тем не менее, теперь обновление модели из одного хранилища не приводит к автоматическому обновлению записи в другом хранилище, поэтому это сводит на нет цель использования DataView, поскольку изменения не обновляются повсеместно на странице при обновлении записей.
My вторая попытка была перезаписать метод collectData
в DataView, который звучал точно , как то, что я делал:
var card = new Ext.DataView({
store: app.stores.cars,
collectData: function(records, startIndex){
// map over the records and collect just the ones we want
var r = [];
for( var i=0; i<records.length; i++ )
if( records[i].data.is_sports_car )
r.push( this.prepareData(records[i].data, 0, records[i]) );
return r;
},
tpl: new Ext.XTemplate([
'<tpl for=".">',
'<div class="car">{name}</div>',
'</tpl>'
]),
itemSelector: 'div.car'
});
Полный пример можно найти здесь .
Но, хотя задокументировано, что я могу / должен переопределить этот метод, Sencha Touch действительно не нравится, когда вы возитесь с длиноймассив, возвращенный collectData, так что это был тупик.
Как другие работают с отображением / обновлением нескольких коллекций одних и тех же записей?
UPDATE Былошибка, препятствующая работе collectData
должным образом.С тех пор эта ошибка была исправлена в Sencha Touch 1.1.0.