我有一个backbone.js
模型,其中包含fieldData
的嵌套对象,如下图所示。
我知道我可以删除这样的整个属性:
this.unset('fieldData');
但是如何删除该属性中的单个对象(例如: - dataPartnerCodes
)。
主干是否为此提供了任何工具?
答案 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}]