我正在寻找一种方法,从 Backbone 集合中检索某种特定属性的数组。
var SomeModel = Backbone.Model.extend({
defaults: function() {
return {
attr1: "something",
attr2: "something",
attr3: "darkside"
};
}
});
var SomeCollection = Backbone.Collection.extend({
model: SomeModel,
url: '/data.json',
});
现在假设我有类似上面的东西,我只想要一个只有属性“attr3”的集合/数组/类似物。有没有什么好的方法可以做到这一点(不是通过手动迭代 SomeCollection 并构建一个新的集合)?我对下划线函数“filter”的理解是,它基于某个前提返回整个 SomeModel,即这不是我想要的。想法?
谢谢
最佳答案
如果你只想要一个属性,你可以使用_.pluck
SomeCollection.pluck('attr3');
对于多个属性,可以组合_.map关于收藏和_.pick在模型上
SomeCollection.map(function (model) {
return model.pick('attr2', 'attr3');
});
还有一个演示 http://jsfiddle.net/nikoshr/qpyXc/1/
或者,使用 _.invoke
以获得更简洁的版本
SomeCollection.invoke('pick', 'attr2', 'attr3');
关于javascript - 从 Backbone 集合中检索特定属性的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16546014/