Ext JS 4フレームワークは、各ビューが独自のストアを受け取ることを意図して構築されているようです。他の回答で述べたように、最善のオプションは、2番目のストアを作成し、すべてのレコードを一方から他方にコピーすることです。
function cloneStore(src, dest) {
var recs = src.getRange(); // returns array of records
dest.loadRecords(recs); // removes existing records before batch add
}
その関数の正確な実装は、データをどのように分散させる必要があるかによって異なる場合があります。各グリッドが最初にデータのサブセットのみを必要とする場合は、Ajax呼び出しからマスターストアを初期化し、store.dataMixedCollectionで直接フィルターを使用して2つのサブストアを作成できます。
// Note: This function isn't exactly "good practice"
// Actual implementation may vary
function populateSubStores(master, storeA, storeB) {
var dataA = master.data.filter(/* filter criteria for store A */),
dataB = master.data.filter(/* filter criteria for store B */);
// dataA and dataB are MixedCollections of records
storeA.loadRecords(dataA.getRange());
storeB.loadRecords(dataB.getRange());
}
またはそのいくつかのバリエーション。これはあなたが正しい方向に始めるのに十分なはずです。
あなたが本当にガンホーなら、異なるビューからのフィルター状態を表す個別のMixedCollectionsを維持する新しいタイプのストアを作成し、各フィルター状態を、と同じインターフェースをExt.data.Store
持つが、"で動作する実装を持つストアとして返すことができます。マスター」ストアの内部表現。これにより、既存のビューがオーバーライドなしで動作できるようになります。しかし、私はそれをお勧めしません。