2011-08-03 20 views
4

私はまったく同じモデルを使用する2つの店舗を持っていますので、まったく同じです(もちろんその名前は除きます)。私は2つの異なる店が欲しい。Senchaは複数の店舗の店舗インスタンスを1つ手にします

app.stores.newsFeed = new Ext.data.Store({ 
    model: 'app.models.feedData', 
    proxy: { 
     type: 'scripttag', 
     url: 'http://query.yahooapis.com/v1/public/yql', 
     extraParams: { 
     format: 'json' 
    }, 
    reader: { 
     root: 'query.results.item' 
    } 
    } 
}); 

app.stores.eventsFeed = new Ext.data.Store({ 
    model: 'app.models.feedData', 
    proxy: { 
     type: 'scripttag', 
     url: 'http://query.yahooapis.com/v1/public/yql', 
     extraParams: { 
     format: 'json' 
    }, 
    reader: { 
     root: 'query.results.item' 
    } 
} 
}); 

私の質問は、私は再び別の新しいExt.data.Storeを再宣言する必要はありませんので、私はコードを排除し、一つだけストアインスタンスを使用して取得することにより、スペースを節約することができますか?以下のような

何か:

store = new Ext.data.Store(...); 
app.stores.newsFeed = store; 
app.stores.eventsFeed = store; 

私は前にこれを試してみましたが、両方がそう1が変更されたときに、他のだった同じ店に割り当てられていました。

答えて

6

だけでExtJSのコンポーネントを拡張し、あなたのコンポーネントの高速なインスタンスを取得することができます

MyStore = Ext.extend(Ext.data.Store, { 
    constructor : function(config) { 
     config = Ext.apply({ 
      model: 'app.models.feedData', 
      proxy: { 
       type: 'scripttag', 
       url: 'http://query.yahooapis.com/v1/public/yql', 
       extraParams: { 
        format: 'json' 
       }, 
       reader: { 
        root: 'query.results.item' 
       } 
      } 
     }, config);     
     MyStore.superclass.constructor.call(this, config); 
    }, 

    onDestroy : function(config) { 
     MyStore.superclass.onDestroy.apply(this, arguments); 
    } 
}); 

をそして、あなたが好きなだけの独立したinstansesを作成します。

app.stores.newsFeed = Ext.create(MyStore, {}); 
app.stores.eventsFeed = Ext.create(MyStore, {}); 
+0

これは、私はあなたに感謝まさに必要でした。しかし、私はExt.Createを私のために正しく働かせることができませんでした(もし私がxtypeを登録したいのであれば)。私はapp.stores.newsFeed = new MyStore()を使用し、それは魅力的に機能します。 – ericbowden