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)
我以前试过这个,但两个都被分配到同一个商店,所以当一个被改变时,另一个被改变.
只需扩展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)