【发布时间】:2012-09-17 06:06:49
【问题描述】:
我很难让三合会 rails+angularjs+jQuery datepicker 一起工作。
第一个问题是显示从后端检索到的日期。 当 UI 从后端请求数据时,在某个时刻,它会收到以下信息 JSON 表示法的东西。
{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-05-01","fine":"2013-09-22","$$hashKey":"005"}
相关字段为“inizio”和“fine”(分别为开始日期和结束日期)。
Rails 时区设置为欧洲/罗马。
Datepicker 的选项设置为:{dateFormat: 'dd/mm/yy'}
因此,我希望输入字段将“inizio”日期显示为:01/05/2012 但是,相反,我回来了:24/03/2018。
将 dateFormat 选项更改为 'yy-mm-dd' 显示正确的日期,但不需要 分隔符和格式 (2012-05-01) ...
然而,在幕后发生的事情是,显示的对象受到了一些操纵,变成了这样:
{"id":1,"ragione_sociale":"FrigoCaserta srl","indirizzo":"Strada provinciale Gricignano d'Aversa","cap":"81030","citta":"Gricignano d'Aversa","provincia":"CE","partita_iva":"1234","codice_fiscale":null,"tipo_contratto":"Orario","costo":"0.0","inizio":"2012-04-30T22:00:00.000Z", ...
注意“inizio”字段现在从“2012-05-01”转换为“2012-04-30T22:00:00.000Z”
现在,当我将表单提交到后端时,一切都搞砸了,因为 rails 收到了 由 datepicker 格式化的 "inizio" 的新值。数据库字段只是一个 Date 使得有关时间的信息消失了,剩下的只是持久化到模型中的(错误的)日期。
我知道 datepicker 具有本地化选项,但我找不到任何与时区相关的内容,我可以更改以修复这种不需要的行为。
我以为我可以使用后端模型上的属性来解析来自 UI 的信息,但我不喜欢这种方法。
在处理所有这些问题时要遵循的最佳做法是什么?
我在 StackOverflow 上遇到过类似的问题,但运气不好。
提前感谢您的帮助。
【问题讨论】:
-
经过几个小时的挣扎,我终于解开了谜团。当然,这是我的一个错误,“ui-date 指令存储并期望模型值是标准的 javascript Date 对象”完全从我的视线中消失了。我将日期字段作为字符串传递。
-
那么你做了什么来确保这些字段是日期而不是字符串?
-
我只是在我的 angularjs 服务中拦截了来自后端的成功响应,并将字符串表示替换为 Date 实例。
标签: jquery ruby-on-rails json datepicker angularjs