Отображение ограниченного подмножества (или отдельной записи из) магазина в Ext. DataView

В 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.

11
задан sra 9 December 2014 в 08:18
поделиться