Sencha为多个商店触摸一个商店实例

eri*_*den 4 storage extjs sencha-touch

所以我有两个商店使用完全相同的模型,它们在各方面都完全相同(当然除了它们的名称).我想要两个不同的商店.

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'
    }
}
});
Run Code Online (Sandbox Code Playgroud)

我的问题是我可以通过删除代码并仅使用一个商店实例来节省空间,所以我不必再次重新声明另一个新的Ext.data.Store吗?

就像是:

store = new Ext.data.Store(...);
app.stores.newsFeed = store;
app.stores.eventsFeed = store;
Run Code Online (Sandbox Code Playgroud)

我以前试过这个,但两个都被分配到同一个商店,所以当一个被改变时,另一个被改变.

Xup*_* MV 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);
    }
});
Run Code Online (Sandbox Code Playgroud)

并根据需要创建尽可能多的独立实例:

app.stores.newsFeed = Ext.create(MyStore, {});
app.stores.eventsFeed = Ext.create(MyStore, {});
Run Code Online (Sandbox Code Playgroud)