В Sencha Touch мне часто требуется панель Ext.DataView, содержащая небольшой подмножество записей или даже одну запись из коллекции в магазине.
Например, у меня может быть Модель для Автомобиль
, в которой есть тысячи записей об автомобилях в его 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',
'{name}',
''
]),
itemSelector: 'div.car'
});
Полный пример можно найти здесь .
Но, хотя документально подтверждено, что я могу / должен переопределить этот метод, Sencha Touch действительно не любит, когда вы возитесь с длиной массива, возвращаемого функцией collectData, поэтому это было тупик.
Как другие справляются с отображением / обновлением нескольких коллекций одних и тех же записей?
ОБНОВЛЕНИЕ Произошла ошибка, не позволяющая collectData
работать должным образом. С тех пор ошибка была исправлена в Sencha Touch 1.1.0.