我有这段代码:
var products = kf.Collections.products.filter(function(product) {
return product.get("NominalCode") == chargeType
});
if (products.length) {
for (x in products) {
products[x] = products[x].toJSON();
}
}
return products;
我是否正确地认为可能有更多的Backbone方式来执行for in
循环?
答案 0 :(得分:0)
您可以使用Collection.where
简化过滤器其中 collection.where(attributes)
返回集合中与传递的属性匹配的所有模型的数组。对...有用 过滤的简单案例。
您可以使用_.invoke
删除for循环调用 _.invoke(list,methodName,[* arguments])
在列表中的每个值上调用 methodName 命名的方法。任何额外的 传递给invoke的参数将被转发到该方法 调用
这些修改可能看起来像
var products = kf.Collections.products.where({
NominalCode: chargeType
});
return _.invoke(products, 'toJSON');
http://jsfiddle.net/nikoshr/3vVKx/1/
如果您不介意使用chained methods
更改操作顺序return kf.Collections.products.chain().
invoke('toJSON').
where({NominalCode: chargeType}).
value()
http://jsfiddle.net/nikoshr/3vVKx/2/
或者@kalley在评论中提出的一个简单的
_.where(kf.Collections.products.toJSON(), { NominalCode: chargeType })