我正在尝试将日期设置为日期选择器,但无法设置日期。 下面是我的sencha触摸代码块。
this.scheduledDatePicker = Ext.create('Ext.field.DatePicker', {
//label: 'To',
//labelAlign: 'right',
//cls: 'form-block',
value: new Date(),
flex: 2.6,
});
并且我在页面加载后设置值或使用以下代码从数据库获取值。我尝试了很多,因为您可以看到注释的代码。但无法设置此值。
var date= Ext.Date.format(Ext.Date.parse(this.rec.get('bookingDateTime'), "Y-m-d H:i:s"), "d/m/Y");
//var date= Ext.Date.parse(this.rec.get('bookingDateTime'));
//var date= this.rec.get('bookingDateTime');
this.scheduledDatePicker.setValue(date);
有人可以告诉我为什么我的代码不起作用或针对此问题的任何解决方案吗?
答案 0 :(得分:0)
日期字段接受一个JavaScript日期,但是您似乎没有提供它。
您应该检查this.rec.get('bookingDateTime')
返回什么,以及如何以获取JavaScript日期的方式修改该字段。
我希望您已经有一个模型,可以在其中指定该字段为具有特定日期格式的date类型:
Ext.define('MyModel', {
fields: [{
name: 'bookingDateTime',
type: 'date',
dateFormat: 'Y-m-d H:i:s' // specify format that is received from the server
}]
});
然后,ExtJS将为您进行转换,您可以使用setValue
而无需进行任何解析:
this.scheduledDatePicker.setValue(this.rec.get('bookingDateTime'));
如果您还没有模型,您仍然可以从bookingDateTime中读取字符串,然后不时解析它,并将其放入选择器中:
var date= Ext.Date.parse(this.rec.get('bookingDateTime'), "Y-m-d H:i:s");
console.log(date); // <- if date is null, format is not specified correctly.
this.scheduledDatePicker.setValue(date);
在两种情况下,控制台记录临时结果都可以帮助查明问题所在:在大多数情况下,“解析日期”为null,因为格式字符串与从服务器接收的日期格式不匹配。