我的Ember模型上有date
属性:
// models/foo.js
export default DS.Model.extend({
name: attr('string'),
startDate: attr('date')
});
我的组件将ISO 8601格式的日期设置为is convention:
// components/date-picker.js
export default Ember.Component.extend({
...
picker.on({
set: function(timestamp) {
// timestamp.select is a unix timestamp
var date = new Date(timestamp.select);
var iso = date.toISOString();
self.set('property', iso);
}
});
...
我可以在Ember检查员身上看到这一点:
但是,当Ember将数据发布到我的后端时,startDate
为null
。
有没有人知道为什么会这样?
答案 0 :(得分:3)
日期转换期望您的属性是日期对象客户端,而不是字符串。它会在序列化时检查它是否是Date的实例。
serialize: function(date) {
if (date instanceof Date) {
return toISOString.call(date);
} else {
return null;
}
}
最好将属性设置为日期对象,并让它在序列化时调用toISOString
以发送到服务器。