我想创建一个可以重复使用的简单商店,只包含数年。
Ext.define('Workshop.store.YearsStore',
{
extend: 'Ext.data.Store',
fields: ['id', 'type'],
constructor: function(config)
{
var years = [];
for(var n=1972;n<=Ext.Date.format(new Date(), 'Y');n++)
{
years.push({id: n, type: n});
}
config.data = years;
this.initConfig(config);
return this;
}
});
这不起作用,如何在商店创建时定义静态数据集?
答案 0 :(得分:1)
要纠正的事情很少:
initConfig
。 initConfig
旨在添加getter&amp;类中config
属性中包含的属性中的setter。在这种情况下,您只需要致电callParent
。它应该照顾好你的其余部分。config
,您将忘记处理此案例。 config
可能为null,在某些情况下,您的第config.data
行会引发config is undefined
。(new Date()).getFullYear()
似乎更好?以下是经过修改的代码,link to demo。
Ext.define('Workshop.store.YearsStore', {
extend: 'Ext.data.Store',
fields: ['id', 'type'],
startYear: 1972,
endYear: (new Date()).getFullYear(),
constructor: function(cfg) {
var me = this;
//We init the configurations first (to copy startYear and endYear)
Ext.apply(me, cfg || {});
me.data = [];
//Then we push data
for(var n = me.startYear ; n <= me.endYear ; n++) {
me.data.push({id: n, type: n});
}
//Then finally we callparent to init this store.
me.callParent([cfg]);
}
});