这几天使用Extjs4.0中的MVC,遇到的一个问题。把问题记录下来,希望可以给大家带来帮助。
首先我使用的Extjs版本是4.0.2a,然后同时引用了“ext-lang-zh_CN.js”。之后我在FORM提交的时候,使用store.sync()方法将record中的参数提交到后台,代码如下:
Save: function(button){ var win = button.up('window'), form = win.down('form'), record = form.getRecord(), values = form.getValues(); if(typeof(record) != 'undefined'){ record.set(values); } else{ record = Ext.create('HB.model.YqInstrument'); record.set(values); record.set('InstrumentID',0); this.getYqInstrumentsStore().add(record); } win.close(); this.getYqInstrumentsStore().sync(); record.commit(); record.phantom=false; },
然后发现Extjs报错,“this.getFullYear is not a function”,一想,应该是日期控件Datefield的问题,于是到Form里看,发现Datefield显示的格式是"y年m月d日的格式",如下图:
原来是“ext-lang-zh_CN.js”的本地化文件把Datefield的值改成中文格式后,Extjs不认识它是日期对象了。所以就报错“this.getFullYear is not a function”。
解决方法是:
修改“ext-lang-zh_CN.js”文件中的
if(Ext.form.field.Date){ Ext.apply(Ext.form.field.Date.prototype, { disabledDaysText : "禁用", disabledDatesText : "禁用", minText : "该输入项的日期必须在 {0} 之后", maxText : "该输入项的日期必须在 {0} 之前", invalidText : "{0} 是无效的日期 - 必须符合格式: {1}", format : "y年m月d日"
}); }
为
if(Ext.form.field.Date){ Ext.apply(Ext.form.field.Date.prototype, { disabledDaysText : "禁用", disabledDatesText : "禁用", minText : "该输入项的日期必须在 {0} 之后", maxText : "该输入项的日期必须在 {0} 之前", invalidText : "{0} 是无效的日期 - 必须符合格式: {1}", format : "Y-m-d" // //如果datefield设置了这个,会导致报错“this.getFullYear is not a function”.. }); }
问题解决。