Bar*_*obs 10 javascript backbone.js
我将日期以DATETIME格式存储在MySQL数据库中.从数据库中提取模型时,日期(以DATETIME格式)将转换为模型初始化方法中的日期对象.到现在为止还挺好.
将模型保存到服务器时,需要将日期对象转换回DATETIME格式,以便服务器端代码正确解释日期.我已经使用了各种各样的hackery来做这件事,但是我想知道模型的保存方法在哪个阶段可以安全地将日期转换为DATETIME格式?
一种方法是执行以下操作:
this.model.save({
date : date.toDateTime()
}, options);
Run Code Online (Sandbox Code Playgroud)
但是,这会导致更改事件被触发,因为save方法之前的属性hash与save事件之后的哈希不同(这会触发Backbone的set方法).
我建议在模型和界面中使用UNIX时间(从1970年开始的秒数/毫秒),并仅在转换为可读日期View.
所以服务器发送和接收日期都是数字1328281766454,这就是你存储它们的方式Backbone.Model.当必须渲染时,View您可以简单地调用:
new Date(this.model.get('someTime')); //Fri Feb 03 2012 16:09:26 GMT+0100 (CET)
Run Code Online (Sandbox Code Playgroud)
在服务器端也可以这样做.相信我,这是最简单,最便携的传输日期的方式,没有所有这些时区问题.
我会做两个地方之一:
在服务器上:
这可能是最有意义的,因为您的服务器端实现实际上是需要DATETIME表示的实现; 您的客户端代码根本不需要关心.
在toJSON()你的模型上:
如果你必须做的客户端,覆盖Backbone.Model的toJSON()为你的模型,并更新它.例:
toJSON: function () {
var json = Backbone.Model.prototype.toJSON.call(this);
json.date = convertDate(this.get('date'));
return json;
}
Run Code Online (Sandbox Code Playgroud)
如果这样做,您需要在模型initialize()或parse()函数中转换日期.