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

时间:2011-08-03 18:56:11

标签: storage sencha-touch extjs

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

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 个答案:

答案 0 :(得分: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);
    }
});

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

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