我有一个包含日期字段和时间字段元素的表单。我将日期字段格式编辑为Y-m-d,时间输出如下:
var form = Ext.getCmp('travelForm').getForm();
var record = form.getRecord();
var values = form.getValues();
if (values.hora_inicio!='')
values.hora_inicio = values.hora_inicio + ':00';
if (values.hora_termino!='')
values.hora_termino = values.hora_termino + ':00';
if (values.hora_ingreso!='')
values.hora_ingreso = values.hora_ingreso + ':00';
record.beginEdit();
record.set(values);
record.endEdit();
console.log(JSON.stringify(values));
JSON.stringfy(值(的显示是我的数据,格式正确,但当我进行时
record.save()
它失败了,因为请求有效载荷表明提到的数据(时间字段和日期字段值(是ISO日期('YYYY-mm-dd'HH:mm:SS(。我猜这与作为对象的timefield和datefield元素的输出有关,但我需要了解如何更改记录的格式,以使用正确的输出来创建record.save((。
编辑
正如建议的那样,我包括了时间字段和日期字段的配置。它们是我表单的"项目"配置的一部分:
{
xtype: 'datefield',
margin: '5 0 0 0',
labelWidth: 150,
labelSeparator: ' ',
submitEmptyText: false,
anchor: '100%',
format:'Y-m-d',
fieldLabel: 'Fecha Inicio',
emptyText: 'Fecha Inicio',
name:'fecha_inicio',
allowBlank: false,
},
{
xtype: 'timefield',
minValue: '0:00',
maxValue: '23:30',
format: 'H:i',
increment: 30,
anchor: '100%',
fieldLabel: 'Hora Inicio',
id: 'form_hora_inicio',
emptyText: 'Hora Inicio',
name:'hora_inicio',
allowBlank: false
},
这种模式是:
Ext.define('Admin.model.travel.Travel', {
extend: 'Admin.model.Base',
fields: [
{
name: 'nombre'
},
{
name: 'fecha_inicio',
type: 'string'
},
{
name: 'hora_inicio',
type: 'string'
},
{
name: 'fecha_termino',
type: 'string'
},
{
name: 'hora_termino',
type: 'string'
}
],
idProperty: 'id_travel',
proxy: {
type: 'ajax',
reader: {
type: 'json',
rootProperty: 'data'
},
api: {
create : 'index.php/travel/create_travel',
//read : '',
update : 'index.php/travel/update_travel',
destroy : 'index.php/travel/delete_travel'
}
}
});
我还可以指出,如果我做
console.log(record.data)
它向我展示了两种显示:首先,数据显示为具有正确格式的JSON,然后它再次显示数据,但所有日期都转换为ISO格式。
如果它对任何人都有用,就在之前
record.save();
有一个
form.updateRecord(record);
这导致对象"record"的值再次从表单中检索,并出现各种格式问题。评论为我做了这件事。