Rückgrat-Modell gibt diese.legen Sie nicht eine Funktion im Modell.initialisieren
Habe ich ein Modell hört auf die Belüftung für eine Veranstaltung "update:TotalCost", die ausgelöst wird, von (nicht) - Kollektion C, wenn jedes Modell M gehörenden Sammlung C ändert.
Dieses Ereignis wird codiert in der initialize-Methode, wie unten dargestellt. Nach Erhalt den Fall, ich bekomme die folgende Fehlermeldung:
TypeError: this.set ist nicht eine Funktion
diese.set({ "totalsale": Wert});
CostModel = Backbone.Model.extend({
defaults: {
totalSale: 0,
totalTax: 0
},
initialize: function(attrs, options) {
if(options) {
if(options.vent) {
this.vent = options.vent;
}
}
this.vent.on("update:TotalCost", function(value) {
this.set({ "totalSale": value}); **//ERROR HERE**
});
}
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie versucht, mit einer Schließung?
Es ist sehr gut möglich, Sie haben vergessen, hinzuzufügen, die
new
Schlüsselwort, bevor Ihr Modell zum Beispiel haben Sie:Vielleicht möchten Sie
this
zu beziehen zu aktuellenCostModel
Instanz, zu tun, so dass Sie brauchen, um passierenthis
zuthis.vent.on
rufen Sie also Ereignis-callback der ausgeführt wird, im Kontext des Modells:this
?this.vent
? Entweder Weg, wenn seine backbone-view -, Modell-oder Abholung inthis
soll, damit Sie auf die Instanz, nicht die Fenster.vent.on
annehmen sollte, der Kontext in dem 3. argument. Habe keine Ahnung, warum es nicht funktioniert.kann es aufgrund 'set' funktioniert auf Modell nicht auf Objekt. so können Sie zuerst konvertieren Sie das Objekt in zum Modell dann versuchen..
im Beispiel:
Andere Ursache für diesen Fehler kann sein, wenn Sie versuchen, ein neues Modell erstellen, ohne mit dem Schlüsselwort "new"
War ich immer dieser mysteriöse Fehler, wenn es mit Analysieren. Ich hatte:
... wenn ich gehabt haben sollte:
Entfernt die extra () und es funktioniert jetzt.
Andere Ursache: