2011-08-03 172 views
4

因此,我有兩個商店使用完全相同的模型,它們在各方面都完全相同(除了它們的名稱當然)。我想要兩個不同的商店。Sencha觸摸多個商店的一個商店實例

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; 

我以前試過,但都被分配到同一家商店所以當一個人被更改,因此被對方。

回答

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 =新的MyStore(),它的作用就像一個魅力。 – ericbowden