EmberJS -在渲染前修改模型并在更新时重置

EmberJS - modifying model before render and resetting during update

本文关键字:更新 模型 修改 EmberJS      更新时间:2023-09-26

这个问题可能有点模棱两可。在下面增加了一个JsBin示例。

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

我有两个问题。

: 正如您在示例中看到的,由于某些原因Ember不喜欢以大写字符开头的属性。在这个例子中,Subject没有被渲染,但是subjectInLowercase被渲染了。

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

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

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

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}}