用于保存的Backbone.js解析

用于保存的Backbone.js解析,backbone.js,Backbone.js,我有一个模型,它在属性数组中保留一些其他模型。但是,当存储这些模型时,我不想保留子模块——相反,我想存储主键,然后当从服务器获取模型时,它的解析将通过获取相关模型来“重建”它们 实现这一目标的最佳方法是什么?我最接近让它工作的方法是覆盖sync方法: sync : function(method, model, options) { var topics = this.get('topics'); model.attributes.topics = _.pluck(topics, 'id

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

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

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) {
  this.topics = _.map(response.topics, function(item) {
    return app.topics.getByPK(item);
  }
  return response;
}

它使您的ID数组始终保持完整,您可以使用
this.topics
而不是
this.get('topics')
this.attributes.topics

来访问它。您的
parse
函数是什么样子的?我在上面添加了它(或至少是相关部分)。
parse : function(response) {
  this.topics = _.map(response.topics, function(item) {
    return app.topics.getByPK(item);
  }
  return response;
}