私はこれらのバックボーンの初心者の間違いの1つを犯していると確信していますが、1時間探し回った後、解決策が見つかりませんでした.
問題は次のとおりです。コレクションからフィルター処理されたモデルを取得しようとすると、「productCollection.getProductByName("M020012").toJSON は関数ではありません」というタイプ エラーが発生します。
しかし、フィルター メソッドを単純な "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);