/ / „This.collection.each nie jest funkcją”. Czy nie powinno to po prostu powiedzieć „każdy”? - javascript, jquery, backbone.js, underscore.js

"This.collection.each nie jest funkcją". Czy nie powinien po prostu powiedzieć "każdy"? - javascript, jquery, backbone.js, underscore.js

Naprawdę mam dwuczęściowe pytanie.

Konsola mówi mi: „TypeError: this.collection.each nie jest funkcją”

W krótkim okresie chciałbym wiedzieć, dlaczego mój kod nie działa.

W dłuższej perspektywie bardziej interesuje mnie wiedza, dlaczego nie mówi mi, że „każdy” nie jest funkcją, ponieważ jest to metoda, którą próbuję wywołać.

P.S. Potwierdziłem, że JQuery ładuje się poprawnie, a przed załadowaniem tego kodu, więc to nie jest problem.

Odpowiednim javascript jest:

$(function(){

var items = [
{ name: "Abe Lincoln", details: "Is he that guy from that new reality show?"},
{ name: "Captain Planet", details: "He is our hero"},
{ name: "Karthus", details: "Press R"},
{ name: "Your Mom", details: "She misses me"},
{ name: "Teddy Roosevelt", details: "Makes the most interesting man in the world look boring"}
];

var itemsCollectionView = new ListView({collection: items});
Backbone.history.start();
});

var ListView = Backbone.View.extend({

el: "#the-list",

initialize: function(){
this.render();
},

render: function(){
this.collection.each(function(model){
this.addOne(model);
}, this);
},

//create an itemview for a model, and add it to the list view
addOne:function(model){
var itemView = new ItemView({model: model});
this.$el.append(itemView.render().el);
}
});

Odpowiedzi:

5 dla odpowiedzi № 1

this.collection.each dobrze jest używać z Backbone, problem polega na tym, że nie przekazujesz rzeczywistej kolekcji Backbone do instancji ItemView, ale po prostu tablicę. Potrzebujesz czegoś takiego:

var itemsCollection = new ItemsCollection(items), // substitute your collection variable
itemsCollectionView = new ListView({ collection: itemsCollection });

Próbowałem również uruchomić twój kod na Backbone 1.0.0 i jQuery 1.10.1 i dostaję

   TypeError: Object [object Array] has no method "each"