Backbone.js解析保存

时间:2013-08-09 18:30:01

标签: backbone.js

我有一个模型,它将一些其他模型保存在属性数组中。但是,当存储这些模型时,我不想保留子模块 - 相反,我想存储主键,然后当从服务器获取模型时,它的解析将“重构”它们通过获取相关模型。

实现这一目标的最佳方法是什么?我最接近它的工作是覆盖同步方法:

sync : function(method, model, options) {
  var topics = this.get('topics');
  model.attributes.topics = _.pluck(topics, 'id');

  var ret = Backbone.Model.prototype.sync.call(this, method, model, options);

  this.attributes.topics = topics;

  return ret;
},

但这经常会失败,将键留在属性而不是完整的模型和因此崩溃。

解析功能(稍微解释):

parse : function(response) {
  response.topics = _.map(response.topics, function(item) {
    return app.topics.getByPK(item);
  }
  return response;
}

1 个答案:

答案 0 :(得分:1)

我会做的事情更多就是这些:

parse : function(response) {
  this.topics = _.map(response.topics, function(item) {
    return app.topics.getByPK(item);
  }
  return response;
}

这样可以随时保持您的ID数据完好无损,并且您可以使用this.topics代替this.get('topics')this.attributes.topics

进行访问