Итак, скажем, у меня есть магазин и в моей БД 20 000 000 строк. (также достаточно, чтобы я настроил размер страницы, чтобы я возвращал только 100 строк на страницу). Поскольку у меня установлен размер страницы, когда я делаю исходный вызов, я получаю только 100 элементов. Таким образом, следующее возвращает null:
Ext.getStore('MyLargeStore').getById(200); // returns null
Это имеет смысл для меня, поскольку технически магазин на стороне JS не имеет этого конкретного набора идентификаторов. Но можно ли как-то выполнить принудительный поиск, если этот идентификатор не существует? Из того, что я могу сказать, я уже сделал все «удаленное» и «автоматическое», что нужно в моем магазине:
Ext.define('MyApp.store.MyLargeStore', {
extend: 'Ext.data.Store',
requires: [
'MyApp.model.MyLargeModel'
],
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
autoSync: true,
model: 'MyApp.model.MyLargeModel',
remoteFilter: true,
remoteSort: true,
storeId: 'MyLargeModel',
buffered: true,
pageSize: 100
}, cfg)]);
}
});
Есть ли способ заставить его тянуть с удаленного сервера, когда идентификатор не существует? Кажется, я не могу найти метод в документах (если только я его не упустил, поскольку их документы иногда трудно расшифровать =/)
Кроме того, я предполагаю, что вы всегда можете выполнить загрузку в хранилище, но я почти уверен, что если я загружу только эту 1 строку, то все другие места, где используется это хранилище, также будут иметь только эту строку (что я не обязательно хочу) Так что теоретически создание магазина на лету было бы моим единственным вариантом? Кажется, должен быть более простой способ, поэтому я решил спросить. должен быть какой-то лучший способ, чем создавать хранилище, а затем брать запись из этого нового хранилища...