使用ExtJS MVC中init上的函数将数据加载到Ext.data.Store中
我需要在init上用finction填充存储数据,如:使用ExtJS MVC中init上的函数将数据加载到Ext.data.Store中,extjs,store,Extjs,Store,我需要在init上用finction填充存储数据,如: Ext.define('Vcs.store.Years', { extend: 'Ext.data.Store', fields: ['year'], data: this.getYears(), getYears: function() { var data = [] date = new Date thisYear = date.getFu
Ext.define('Vcs.store.Years', {
extend: 'Ext.data.Store',
fields: ['year'],
data: this.getYears(),
getYears: function() {
var data = []
date = new Date
thisYear = date.getFullYear();
for(var i = thisYear - 100; i <= thisYear; i++) {
data.push({
year: i,
});
}
return data;
}
});
Ext.define('Vcs.store.Years'{
扩展:“Ext.data.Store”,
字段:[“年”],
数据:this.getYears(),
getYears:function(){
var数据=[]
日期=新日期
thisYear=date.getFullYear();
对于(var i=thiswear-100;i我认为您的this
的范围是错误的。您必须在构造函数中填充数据:
constructor: function() {
var me = this;
Ext.apply(me, {
data: me.getYears()
});
me.callParent();
}
您可以这样做:
Ext.define('Vcs.store.Years', {
extend: 'Ext.data.Store',
fields: ['year'],
data: (function() {
var data = [],
date = new Date,
thisYear = date.getFullYear();
for(var i = thisYear - 100; i <= thisYear; i++) {
data.push({
year: i
});
}
return data;
})()
});
Ext.define('Vcs.store.Years',{
扩展:“Ext.data.Store”,
字段:[“年”],
数据:(函数(){
var数据=[],
日期=新日期,
thisYear=date.getFullYear();
对于(var i=thiswear-100;i到目前为止建议的解决方案在Sencha Architect中都不起作用:闭包将删除所有空格,因此new Date
将成为未定义的newDate
;函数me.getYears()
将获得引号,从而成为字符串'me.getYears()'
所以对于那些使用Sencha Architect的人来说,这里有一个应该使用的版本
Ext.define('MyApp.store.MyStore'{
扩展:“Ext.data.Store”,
构造函数:函数(cfg){
var me=这个;
cfg=cfg |{};
me.callParent([Ext.apply({
自动加载:对,
storeId:'MyStore',
字段:[
{
名称:'年',
键入:“int”
}
],
听众:{
负载:{
fn:me.onStoreLoad,
范围:我
}
}
},cfg)];
},
onStoreLoad:函数(存储、记录、成功、eOpts){
store.add(函数(){
var数据=[];
变量日期=新日期();
var thiswear=date.getFullYear();
对于(var i=thiswear-100;我很感谢,这正是我想要的!下面的两种解决方案在Architect中都不起作用:闭包将删除所有空格,因此newDate
将成为未定义的newDate
;函数me.getYears()
将获得引号,从而成为字符串'me.getYears()
Ext.define('MyApp.store.MyStore', {
extend: 'Ext.data.Store',
constructor: function(cfg) {
var me = this;
cfg = cfg || {};
me.callParent([Ext.apply({
autoLoad: true,
storeId: 'MyStore',
fields: [
{
name: 'year',
type: 'int'
}
],
listeners: {
load: {
fn: me.onStoreLoad,
scope: me
}
}
}, cfg)]);
},
onStoreLoad: function(store, records, successful, eOpts) {
store.add(function() {
var data = [];
var date = new Date();
var thisYear = date.getFullYear();
for (var i = thisYear - 100; i <= thisYear; i++) {
var obj = { year:i };
data.push(obj);
}
return data;
}());
}
});