Backbone-Sammlung.each() funktioniert nicht
Ich erhalte folgende Meldung, wenn ich versuche zu verwenden Rückgrat der Sammlung.each () - Methode:
TypeError: Object function (){ return parent.apply(this, arguments); } über keine Methode verfügt, 'jeder'.
Ich Lerne Rückgrat von einigen Jeffrey Weise tutorials; ich betrat identischen code zu sein, aber aus irgendeinem Grund funktioniert es nicht.
var Person = Backbone.Model.extend({
defaults: {
name: 'besim dauti',
age: 15,
occupation: 'web developer'
}
});
var PeopleView = Backbone.View.extend({
tagName: 'ul',
render: function(){
this.collection.each(function(person) {
var personView = new PersonView({ model: person });
this.$el.append(personView.render().el)
}, this)
return this;
}
});
var PersonView = Backbone.View.extend({
tagName: 'li',
template: _.template( $('#personTemplate').html() ),
render: function(){
this.$el.html(this.template(this.model.toJSON()) );
return this;
}
});
var PeopleCollection = Backbone.Collection.extend({
model: Person
});
var peopleCollection = new PeopleCollection([
{
name: 'besim',
age: 25,
occupation: 'web developer'
},
{
name: 'gaurav',
age: 25,
occupation: 'web designer'
},
{
name: 'jeffry',
age: 27
}
])
var peopleView = new PeopleView ({collection: PeopleCollection});
$(document.body).append(peopleView.render().el);
Warum gibt es dieses problem mit der .each()
Funktion? Ich tippte den code identisch und für Jeffrey, es funktionierte wie erwartet, aber für mich ist es angezeigt, dieser Fehler. Ich Schätze Ihre Hilfe.
Was passiert, wenn Sie fügen Sie eine neue Zeile am Beginn der PeopleView machen wie
console.log(this.collection);
? Das Allgemeine problem scheint zu sein, dass this.collection
ist nicht, was Sie denken, es ist (wenn es da war, es hätte einen each
- Methode). Wenn man sich So anschaut, was es eigentlich ist, in der Konsole (mit Firebug, Chrome developer tools, etc.), es wird wahrscheinlich Ihnen helfen, herauszufinden, was falsch läuft.InformationsquelleAutor besim dauti | 2013-05-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie Sie initialisieren die
PeopleCollection
.Finden Sie unter:
var peopleView = new PeopleView ({collection: PeopleCollection});
Übergeben Sie in der raw-Konstruktor und nicht eine Instanz von Ihr.
Sollten Sie tun:
Wenn Sie sind vertraut mit OOP (Objekt orientierter Programmierung) denken
PeopleCollection
als Klasse undvar peopleCollection = new PeopleCollection()
als eine Instanz der Klasse. Arbeiten Sie mit Instanzen.Werden Sie auch Begegnung ein Fehler in Ihrem
.each
weil Sie kapitalisiertperson
. Änderung:können Sie
console.log(this.collection.models);
vor Ihrerthis.collection.each
und sagen Sie mir, was es sagt.Hast du definitiv ändern
var peopleView = new PeopleView ({collection: PeopleCollection});
to var peopleView = new PeopleView ({collection: peopleCollection});
weil in der geschnittenen beantworten, es ist immer noch die gleiche, und er würde die genaue Fehlermeldung, die Sie sprechen.ich danke Ihnen so sehr. das war der Punkt, den ich mistaked peopleCollection nicht PeopleCollection.
ist es Unterstrich jede Methode ?? wenn ja, dann wo ist das _ Zeichen . bitte lassen Sie mich wissen . danke
InformationsquelleAutor George Reith
Dein code funktioniert gut in jsfiddle.
http://jsfiddle.net/puleos/kbLES/
Sieht es aus, wie können Sie ein Abhängigkeitsproblem. Können Sie nach, wie Sie auch Ihre Scripte auf der Seite?
Ich will' sehen den link, aber ich bin ziemlich sicher, Ihr Problem. Ich bekomme den gleichen Fehler bei jsfiddle, wenn ich entfernen Sie den Unterstrich. Überprüfen Sie, dass der Unterstrich enthalten ist, bevor Sie Rückgrat, und dass Sie nicht immer einen 404.
Bewegen Sie Ihre Skripte auf die unten auf der Seite. Ändern Sie die Reihenfolge, so ist es jquery, underscore, backbone, main.
ja, der Unterstrich ist vor Rückgrat, auch ich weiß nicht, was ist das problem, kann sein problem, die Arbeit in localhost oder nicht
Dein code funktioniert lokal. Fehlt Ihnen nur noch die Bibliothek.
InformationsquelleAutor Scott Puleo