たとえば、ストアがあり、DB に 20,000,000 行あるとします。(別名、ページあたり100行しか戻らないようにページサイズを設定するのに十分です)。ページサイズが設定されているため、元の呼び出しを行うと、100 アイテムしか返されません。したがって、以下は null を返します。
Ext.getStore('MyLargeStore').getById(200); // returns null
技術的には、JS 側のストアには特定の ID が設定されていないため、これは理にかなっています。しかし、そのIDが存在しない場合、強制ルックアップを行う方法はありますか? 私が言うことができることから、私はすでに私の店でそれを必要とするすべての「リモート」と「自動」を行っています:
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)]);
}
});
IDが存在しないときはいつでもリモートサーバーから引っ張るようにする方法はありますか? ドキュメントでメソッドを見つけることができないようです(ドキュメントを解読するのが少し難しい場合があるため、見逃していない限り=/)
また、いつでもストアにロードできると思いますが、その1行だけをロードすると、そのストアが使用されている他のすべての場所にもその行しかありません(必ずしもそうとは限りません)したい) 理論的には、その場でストアを作成することが私の唯一の選択肢でしょうか? もっと簡単な方法があるはずなので、なぜ私が尋ねると思ったのですか。ストアを作成してからその新しいストアからレコードを取得するよりも、何か良い方法があるはずです...