如何强制ember数据重新加载时重置记录的所有字段?

时间:2015-04-16 05:29:51

标签: javascript ember.js ember-data

我正在使用带有ember数据的ember,我有一个需要重新加载模型的场景。在重新加载时,当获取数据并且该模型的某些字段为空时,旧数据仍然存在。例如,如果我有一个Post模型

App.Post = DS.Model.extend({
  name: DS.attr('string'),
  description: DS.attr('string'),
});

现在服务器第一次返回以下数据:

{
  "post" : {
              "id" : "1",
              "name" : "new post",
              "description": "some description"
           }
}

调用reload后,服务器返回以下数据:

{
  "post" : {
              "id" : "1",
              "name" : "new post",
           }
}

重新加载后,"描述"该记录的字段应设置为null。但旧的数据即,"一些描述"仍然坚持这个领域。

如何强制ember数据在重新加载时重置所有字段?

1 个答案:

答案 0 :(得分:1)

不幸的是,您想要的确切功能was deprecated a few months ago。在底部,它提到了序列化程序中使用null替换缺少的属性的方法。

// app/serializers/application.js
// or App.ApplicationSerializer
export default DS.RESTSerializer.extend({
  normalize: function(type, hash, prop) {
    hash = this._super(type, hash, prop);

    // Find missing attributes and replace them with `null`
    type.eachAttribute(function(key) {
      if (!hash.hasOwnProperty(key)) {
        hash[key] = null;
      }
    });

    return hash;
  }
});