1

たとえば、ストアがあり、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行だけをロードすると、そのストアが使用されている他のすべての場所にもその行しかありません(必ずしもそうとは限りません)したい) 理論的には、その場でストアを作成することが私の唯一の選択肢でしょうか? もっと簡単な方法があるはずなので、なぜ私が尋ねると思ったのですか。ストアを作成してからその新しいストアからレコードを取得するよりも、何か良い方法があるはずです...

4

1 に答える 1

1

ここであなたがしようとしていることは、問題に対する間違ったアプローチです。この行が必要なものに戻って、検索しようとしている行の ID を使用してサーバーに独立した ajax 呼び出しを行う必要があります。次に、サーバーはDBでその単一の行を検索し、データを返して、行が必要なモデルを作成します。このロジックは、ストアとは独立して実行する必要があります。

于 2013-07-09T19:33:36.673 に答える