0
我敢肯定,我犯了这些Backbone新手错误之一,但经过一个小时的搜索,我没有找到解决方案。如何从Backbone集合中获取有效的过滤模型?
下面是问题:当我尝试从我的集合中获取过滤模型时,类型错误“productCollection.getProductByName(”M020012“).JSON不是函数”。
但是,如果我将过滤器方法更改为一个简单的“return this.at(0)”,我得到一个有效的模型。
这是什么原因,解决方法是什么?
这里的JSFiddle
var products = [{
"name": "M020013",
"gender": "M",
"pictures": [{
"picture": {}}]},
{
"name": "M020012",
"gender": "M",
"pictures": [{
"picture": {}}]},
{
"name": "M020011",
"gender": "M",
"pictures": [{
"picture": {}}]}
];
var Product = Backbone.Model.extend({});
var ProductCollection = Backbone.Collection.extend({
model: Product,
getProductByName: function(productName) {
//return this.at(0);
return this.filter(
function(product) {
return product.get('name') === productName;
});
}
});
var productCollection = new ProductCollection();
productCollection.on('reset', function() {
console.log('reset');
console.log(productCollection.getProductByName('M020012'));
console.log(productCollection.getProductByName('M020012').toJSON());
});
productCollection.reset(products);
感谢@muistooshort,我更新了我的答案,以反映您的建议 – Paul 2012-08-08 20:10:06