我确定我犯了这些 Backbone 新手错误之一,但经过一个小时的搜索后,我没有找到解决方案。
问题是:当我尝试从我的集合中获取过滤模型时,出现类型错误“productCollection.getProductByName("M020012").toJSON 不是函数”。
但是,如果我将过滤方法更改为简单的“返回 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);