Ich habe überall nach einer Antwort gesucht, war aber nicht zufrieden mit dem, was ich gefunden habe.
Das Problem ist, ich mache ein Tutorial von Addy Osmani, um eine "Todo" -App in Backbone zu machen, aber wenn ich auf die Konsole schaue, erhalte ich eine Fehlermeldung, dass this.model is undefined
.
Ich habe sogar versucht, diese SO Antwort Backbone-Modell Fehler in der Konsole angezeigt , aber ich bekomme immer noch den gleichen Fehler. Bitte sag mir was falsch ist.
Was sind übrigens this.model
oder this.collection
? Ich habe eine Idee, dass sie sich auf Backbone.Model
und Backbone.Collection
beziehen, aber wie funktionieren sie? Ich frage das, weil in einem anderen Tutorial this.collection
und this.model.models
auch undefiniert waren, wenn ich die Model
und Collection
eindeutig definiert habe.
Vielen Dank
JS:
%Vor% Sie müssen ein Model
oder Collection
instanziieren und es an Ihre Ansicht übergeben. Wenn die Rendermethode in Ihrem TodoView aufgerufen wird, ist this.model
andernfalls null.
Versuchen Sie zum Beispiel, die letzten paar Zeilen Ihres Codes wie folgt neu anzuordnen:
%Vor% Von diesem Punkt an können Sie Todos ändern (was ein Collection
ist) und Ihre Ansicht kann die Ereignisse von Todos anhören und entsprechend rendern.
Sie haben es nicht gesagt, aber ich nehme an, dass der Fehler, den Sie bekommen, in der render () -Methode auftritt.
Ihr Problem besteht darin, dass Sie einen neuen Modelltyp ( var Todo = Backbone.Model.extend({...
) definieren, ihn jedoch niemals instanziieren und das Modell nicht an den todoview-Konstruktor übergeben.
Also müssen Sie zumindest tun:
%Vor%Die Antwort in der anderen Frage ist die Antwort auf Ihre Frage: Sie übergeben das Modell nicht an die Ansicht, wenn Sie die Ansicht instanziieren.
%Vor%Wenn Sie ein Objekt an den Konstruktor einer Ansicht übergeben, sucht es nach bestimmten Schlüsseln und hängt sie direkt an die Ansicht an.
Sie können das sehen, indem Sie sich die Backbone-Quelle ansehen und nach viewOptions
suchen.
So erhalten Sie this.model
und this.collection
automatisch an die this
der Ansicht angehängt.
Tags und Links javascript backbone.js backbone-views