在Safari上的Ember应用程序中出现Moment.js问题

时间:2014-06-18 20:48:18

标签: ruby-on-rails ember.js safari momentjs

我刚开始在ember / rails应用程序中使用moment.js。它在Chrome上运行良好,但我在Safari上遇到了一些问题,日期显示为:" undefined NaN / NaN / 0NaN"。我在控制台上仔细检查了一下,果然我得到了一个"无效的日期"错误信息。我认为问题来自于如何在Ember DS模型中格式化日期,因为json本身为两个浏览器返回有效的日期字符串。有没有人有解决方法呢?

HTML:
    {{#each exam in model}}
        <tr>
            <td>
                {{#link-to 'exam' exam}}{{date exam.examDate}}{{/link-to}}
            </td>
        </tr>
    {{/each}}

Javascript:
    Ember.Handlebars.registerBoundHelper "date", (date) ->
        moment(date).format('ddd L, h:mm a')

    App.Exam = DS.Model.extend(
        examDate: DS.attr('date')
    )
    App.ApplicationStore = DS.Store.extend(
        revision: 12
        adapter: App.ApplicationAdapter
    )
    App.ApplicationAdapter = DS.ActiveModelAdapter.extend(
        namespace: 'api/v1'
    )

JSON:
    {
        "exam_date":"2012-12-12 00:00:00"
    }

修改 如果其他人遇到此问题,我通过将DS.attr(&#34; date&#34;)更改为DS.attr(&#34; string&#34;)来解决问题。

1 个答案:

答案 0 :(得分:1)

我将不得不猜测一下,因为我不想获得Ember Data的alpha版本,但我敢打赌它与您的服务器的响应方式有关。

如果你要做this.store.find('exam'),那就会期待像这样的结果

{
  exams:[
    {
        "exam_date":"2014-06-12T14:40:25-07:00",
        "id":2
    },
    {
        "exam_date":"2014-06-12T14:40:25-07:00",
        "id":3
    },
    ....
  ]
}

我绝对建议将您的Ember Data版本升级到至少1.0 beta +。您可以在此处详细了解更改:https://github.com/emberjs/data/blob/master/TRANSITION.md

我汇总了您的应用示例:http://emberjs.jsbin.com/OxIDiVU/680/edit