Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/extjs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ExtJS MVC中init上的函数将数据加载到Ext.data.Store中_Extjs_Store - Fatal编程技术网

使用ExtJS MVC中init上的函数将数据加载到Ext.data.Store中

使用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

我需要在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.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;
        }());
    }

});