从Backbone模型中删除嵌套对象

时间:2013-11-06 11:27:32

标签: backbone.js backbone-model

我有一个backbone.js模型,其中包含fieldData的嵌套对象,如下图所示。

我知道我可以删除这样的整个属性:

this.unset('fieldData');  

但是如何删除该属性中的单个对象(例如: - dataPartnerCodes)。

主干是否为此提供了任何工具?

enter image description here

1 个答案:

答案 0 :(得分:1)

Backbone本身没有这样的仪器,但您可以创建一种方便模型使用的方法。

var Model = Backbone.Model.extend({
  // Remove by passed index
  removeFieldDataAt : function (index) {
    var fieldData = this.get('fieldData');
    fieldData.splice(index, 1);
    this.set('fieldData', fieldData);
  }
});
var model = new Model({fieldData : [{id:1}, {id:2}, {id:3}]});
model.removeFieldDataAt(1);
console.log(model.toJSON()); // [{id:1}, {id:3}]

另一个例子:

var Model = Backbone.Model.extend({
  removeFieldDataByCriteria : function (criteria) {
    var fieldData = this.get('fieldData');
    var fields = _.where(fieldData, criteria);
    _.each(fields.reverse(), function (field) {
      fieldData.splice(fieldData.indexOf(field), 1);
    });
    this.set('fieldData', fieldData);
  }
});
var model = new Model({fieldData : [{id:1,visible:true}, {id:2,visible:false}, {id:3,visible:true}]});
model.removeFieldDataByCriteria({visible:true});
console.log(model.toJSON()); // [{id:2, visible:false}]