我想要什么
我有一个模型/商店/表格组合沸腾到:
Field Name Type UI Control
isAllDay bool Checkbox
startDate date DateField
endDate date DateField
startTime date TimeField
endTime date TimeField
如果选中isAllDay
,我会将两个TimeFields设置为午夜。
但此外,我必须提前一天显示endDate字段;因为“从星期二到星期二”的意思是“星期二午夜到星期三午夜之间的24小时”和“从星期一到星期五”的意思是“星期一午夜到星期六午夜”。
所以,从2014年9月30日星期二到星期二09/30/14的isAllDay应该从2014-09-30 0:00到2014-10-01 0:00提交。
我做了什么
我尝试将convert()
和serialize()
函数构建到模型中:
dateFormat: 'Y-m-d',
name: 'endDate',
type: 'date'
...
name:'isAllDay',
type:'boolean',
convert:function(v, rec) {
if(v==true) {
rec.set("endDate",Ext.Date.add(rec.get("endDate"),Ext.Date.DAY,-1));
}
return v;
},
serialize:function(v, rec) {
if(v==true) {
rec.set("endDate",Ext.Date.add(rec.get("endDate"),Ext.Date.DAY,1));
}
return v;
}
转换功能就像一个魅力;它甚至似乎工作得很好,序列化功能根本不起作用。
isAllDay:true, startDate:2014-10-02, endDate:2014-10-03
isAllDay:true, startDate:2014-10-02, endDate:2014-10-02
,我在表单中看到isAllDay:true, startDate:2014-10-02, endDate:2014-10-01
!这到底出了什么问题?为什么不调用“序列化”,但“转换”显然是被调用两次?
编辑:我做了一个表示问题的小提琴,感谢existsdissolve的帮助:https://fiddle.sencha.com/#fiddle/b8c