0

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

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

this.unset('fieldData');  

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

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

在此处输入图像描述

4

1 回答 1

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}]
于 2013-11-06T12:31:53.687 回答