正如@elclanrs 所说,收藏.采摘 http://backbonejs.org/#Collection-pluck提取单个属性,您将不得不使用_.map http://underscorejs.org/#map具有自定义提取功能。就像是
var c = new Backbone.Collection([
{id: 1, name: "raju", age: 23, sex: "male"},
{id: 2, name: "ramesh", age: 43, sex: "male"}
]);
var plucked = c.map(function (model) {
return _.pick(model.toJSON(), ["name", "age"]);
});
console.log(plucked);
还有一个演示http://jsfiddle.net/U7p9u/ http://jsfiddle.net/U7p9u/
您可以通过组合来简化此调用Collection.invoke http://backbonejs.org/#Collection-Underscore-Methods and Model.pick http://backbonejs.org/#Model-Underscore-Methods
var c = new Backbone.Collection([
{id: 1, name: "raju", age: 23, sex: "male"},
{id: 2, name: "ramesh", age: 43, sex: "male"}
]);
plucked = c.invoke("pick", ["name", "age"]);
console.log(plucked);
http://jsfiddle.net/U7p9u/5/ http://jsfiddle.net/U7p9u/5/
本着类似的精神,如果您的提取函数是在模型的原型上定义的:
var M = Backbone.Model.extend({
mypluck: function () {
return this.pick("name", "age");
}
});
var C = Backbone.Collection.extend({
model: M
});
var c = new C([
{id: 1, name: "raju", age: 23, sex: "male"},
{id: 2, name: "ramesh", age: 43, sex: "male"}
]);
var plucked = c.invoke("mypluck");
console.log(plucked);
http://jsfiddle.net/U7p9u/3/ http://jsfiddle.net/U7p9u/3/