所以我已经使用循环工作了,但是想知道是否有更简洁的方法来做到这一点。
基本上我有一个模型从另一个模型得到一组id,目前我循环每个id并使用模型集合上的过滤器手动将模型添加到新集合。
getOneById : function(id){
return this.filter(function(data) {
return data.get("id") == id;
});
},
有没有办法直接返回类似
的列表getAllById : function(arrayIds){
return _(this.filter(function(data) {
??????? return data.get("id") == eachID;
}));
},
谢谢!
答案 0 :(得分:4)
你可以通过检查你的对象的id是否在一个索引>来减少循环。数组中的-1:
function(arrayIds){
var models = _.select(collection, function(model){
return (_.indexOf(arrayIds, model.id) > -1);
});
return models;
}
这需要在您的代码中包含underscore.js,但由于您已经使用了主干,因此您已经拥有了。
答案 1 :(得分:0)
我的解决方案:
拥有集合(Backbone.Collection)和 arrayIds
var collection2 = new Backbone.Collection();
collection2.add(collection.models.filter(function(model){
return arrayIds.indexOf(model.id) !== -1;
}));
四行:D
console.assert(collection2.length === arrayIds.length) //OK