EmberJS - 在更新期间渲染和重置之前修改模型

时间:2014-08-07 08:38:26

标签: javascript ember.js handlebars.js

这个问题可能有点含糊不清。在下面添加了一个JsBin示例。

http://emberjs.jsbin.com/julimila/4/

我有两个问题。

ONE: 正如您在示例中所看到的,由于某种原因,Ember不喜欢以大写字符开头的属性。在示例中,Subject不会被渲染,subjectInLowercase会渲染。

我请求数据的API总是以这个大写符号发送数据,我无法控制它。目前我正在通过将数据传递给将所有属性转换为camelCase的方法来解决此问题。幸运的是,如果我将数据发送回camelCase,服务器并不在意。我该如何解决这个问题?

TWO: 我需要在渲染之前修改数据中的一些属性。在示例中,我添加了一个名为formattedDate的新属性。这是Timestamp字段的修改版本。我通常使用Handlebars帮助器来执行此格式化,但这一次,它是一个输入字段。更新模型时,我不希望此formattedDate属性返回到服务器。有没有比在模型中更新其相关属性更好的方法,然后手动删除这些额外的字段。

1 个答案:

答案 0 :(得分:0)

您可以将格式日期逻辑放在控制器中,因为控制器是模型的代理。

App.IndexController = Ember.ObjectController.extend({

  getFormattedDate: function(){
    return moment(this.get('model.Timestamp')).format('DD/MM/YYYY');

  }.property('id'),

  actions: {
    updateForm: function() {
      var data = this.get('model');
      console.log(data);
      // Post this model back to the server
    }
  }
});

在视图中使用

Formatted Date: {{input value=getFormattedDate}}