2015-09-17 7 views
2

Работа с приложением, основанным на Sencha Touch Мне нужно получить общий объем магазина, но с предыдущим фильтром.Как получить итоговые записи с предыдущим фильтром в приложении Sencha Touch?

Я могу сделать store.getCount() и узнать общие записи магазина, но как узнать общие записи с предыдущим фильтром?

+0

Вы можете отправить код здесь, что вы хотите сделать? Я могу помочь тебе. –

+0

Просто, я хочу фильтровать, например, по имени и получить подсчет этого. Представьте, сколько записей имеет имя «Билли» ... спасибо! – inane

ответ

1

Вот альтернативное решение:

var count = 0; 

store.findBy(function(rec) { 
    if (rec.get('myFilter')) { 
     count++; // Only counting matching data 
    } 
}); 

console.log(count); // Total amount of filtered data 

От: https://www.sencha.com/forum/showthread.php?174156-Store-count-by-criteria-without-filter

+0

Это работает для меня !! Большое спасибо!! :-) – inane

+0

Рад это слышать :) –

+0

Я не понимаю, почему это правильный ответ. Во-первых, я бы предложил заменить 'findBy' на' each', если вы хотите сделать это таким образом. Во-вторых, 'if (rec.get ('myFilter'))' может работать, только если вы проверяете логическое значение. Ответ, на который вы ссылаетесь, больше 3 лет, а также проверяет значение boolean. Теперь вы можете использовать 'query' (для extjs или' queryby' (для Touch). – Tarabass

0

Если магазин фильтруется getCount() будет получать количество записей на основе фильтра. Если вы фильтруете «Билли», то getCount() вернется только 2, если есть 2 «Билли».

Из документов:

Возвращает количество записей в хранилище.

При использовании пейджинга это может быть не общий размер набора данных. Если объект данных , используемый считывателем, содержит размер набора данных, функция Ext.data.ProxyStore.getTotalCount возвращает размер набора данных. Примечание: см. Важное примечание в файле Ext.data.ProxyStore.load.

Когда хранилище фильтруется, это число записей, соответствующих фильтру .

Если вы хотите, чтобы получить общую информацию, вы можете использовать getTotalCount(). Это будет считать все записи, независимо от того, фильтруется он или нет.

Из документов:

Возвращает общее количество экземпляров модели, что прокси указывает существует. Это, как правило, отличаются от GetCount при использовании подкачки - GetCount возвращает количество записей, загруженных в магазин на момент getTotalCount возвращает количество записей, которые могут быть загружены в магазин, если магазин содержал все данные

Если вы хотите сделать запрос через магазин, вы можете использовать queryBy. Это вернет коллекцию записей. Затем вы можете использовать getCount() над коллекцией.

var billies = store.queryBy(function(rec, id) { 
    return rec.get('name') === 'billy'; 
}); 

billies.getCount(); 
+0

да, но определенно мне нужно для фильтрации ранее с помощью метода, указанного в @Benoit .. Я получу вашу рекомендацию по getCount и getTotalCount .... Спасибо! – inane