Ответ 1
Изменение: на это был дан ответ для Ext 4.2, где snapshot
был общедоступным и документированным. Он ушел сегодня. Итак, здесь обновление для Ext 5 и 6.
Ext 5/6
Один лайнер:
var allRecords = (store.getData().getSource() || store.getData()).getRange();
Распад:
var data = store.getData();
// get unfiltered collection (will be null if the store has never been filtered)
var snapshot = data.getSource();
// pick the one that exists
var unfilteredCollection = snapshot || data;
// get items in an array
var allRecords = unfilteredCollection.getRange();
Store#getData
предоставляет вам коллекцию магазинов.
Collection#getSource
предоставляет вам источник "источник", то есть нефильтрованную коллекцию, но только если коллекция уже была отфильтрована, иначе она возвращает значение null
.
В обоих случаях вы получите Ext.util.Collection
. Используйте getRange
для получения фактического массива элементов.
Ext 5 метод getUnfiltered
Метод getUnfiltered
был введен в какой-то момент в Ext 5 (5.0.1, насколько я могу судить, но docs для Ext 5 сейчас отключены...). Он не присутствовал в первых версиях Ext 5, и его не было Ext 6. Итак, хорошо... Не используйте его! Если вы не хотите связать свой код с Ext 5 без каких-либо причин, используйте описанный выше метод.
Ext 4
(оригинальный ответ)
Весь загруженный набор данных сохраняется в свойстве snapshot
магазина.
Он создается только тогда, когда это необходимо. Это означает, что свойство будет недоступно до того, как некоторые фильтры будут применены к хранилищу. Чтобы получить необходимую информацию безопасным способом, используйте:
var allRecords = store.snapshot || store.data;
Ext 4/5/6
(и, вероятно, будущие версии)
Вы можете использовать query
или queryBy
.
Это, по-видимому, более перспективный подход, поскольку, вопреки предыдущим методам, этот API не изменился в разных версиях.
К сожалению, это приведет к сбору коллекции и потребует дополнительных затрат на обработку... Что может быть или не быть незначительным в зависимости от размера вашей коллекции.
var allRecords = store
.queryBy(function() { return true; }) // returns a collection
.getRange(); // returns array of items