在我的ember-data适配器中,我使用下面这一行来序列化我的模型
var data = record.serialize();
但我注意到我的模型有日期类型...
App.Foo = DS.Model.extend({
start: DS.attr('date')
});
..。我会将这样的日期发布到我的REST api
Sat,2013年3月2日22:15:00 GMT
但是我需要更友好的api,比如yyyy-mm-dd或mm/dd/yyyy
ember-data是否提供了一个钩子来改变通过网络发送日期的方式?
我假设不是,因为这是ember data rev 11中序列化方法的实际返回行
return dayOfWeek + ", " + dayOfMonth + " " + month + " " + utcYear + " " + pad(utcHours) + ":" + pad(utcMinutes) + ":" + pad(utcSeconds) + " GMT";
更新
我还打开了一个关于ember-data的问题,以了解为什么选择这种格式作为开始
发布于 2013-03-29 09:43:44
您可以注册自定义序列化程序转换。
DS.RESTAdapter.registerTransform("isodate", {
deserialize: function(serialized) {
return serialized;
},
serialize: function(deserialized) {
return deserialized;
}
});
然后将其用作start: DS.attr("isodate")
,当然要正确定义序列化/反序列化:)
发布于 2014-01-24 22:14:27
您可以按照Jakub在此answer中的建议注册一个新的转换。使用Ember Data 1.0.beta.1
,你必须像这样在应用程序上使用create a new transform:
App.IsodateTransform = DS.Transform.extend({
deserialize: function (serialized) {
if (serialized) {
return moment(serialized).toDate();
}
return serialized;
},
serialize: function (deserialized) {
if (deserialized) {
return moment(deserialized).toISOString();
}
return deserialized;
}
});
如果不使用moment.js,您可以更改serialize
和deserialize
定义。
发布于 2013-06-27 22:50:10
Ember-Rails解决方案:
我在一个ember-rails应用程序中使用ember-data 0.13 / ember.js 1.0.0.rc5。我发现我必须执行以下操作才能将javascript日期与rails日期进行匹配。
# Transforms Date to avoid miss-match with rails date
DS.JSONTransforms.isodate =
deserialize: (serialized) ->
if serialized
date = new Date(serialized)
offset = date.getTimezoneOffset()
new Date(date.getTime()+offset*60000)
else
null
serialize: (date) ->
if date then moment(date).format("YYYY-MM-DD") else null
*我正在使用moment.js进行序列化,但您自己做起来可能并不难。
https://stackoverflow.com/questions/15695809
复制相似问题