Wie Sie das update-Attribut eines bestehenden Modells?
Wollte ich aktualisieren die Rang Attribut eines bestehenden Modells, die ich bestanden aus einer anderen Ansicht. Allerdings bekomme ich den Fehler Uncaught TypeError: Object # hat keine Methode "set".
In der initialize-Teil der view habe ich :
this.collection = new tgcollection({model : this.options.model });
Ich eine Funktion definieren, updateModel aktualisieren sollen den Wert des Attributs als:
updateModel: function(){
var val= $("#textbox_id").val();
console.log(val);
console.log(JSON.stringify(this.options.model));
JSON.stringify(this.options.model);
this.options.model.set({"rank": val});
this.render();
//
},
Wohin gehe ich falsch?
Ich kann sehen, dass der Wert und das Modell mit seinem vorherigen Attribut-Werte in der Konsole.
Modell:
define(['jquery','underscore', 'backbone', 'deepmodel'],
function($,_, Backbone) {
var model = Backbone.DeepModel.extend({
//Default attributes for the model.
defaults : {
id: null,
rank: null,
},
initialize: function(){
_.bindAll(this,"update");
this.bind('change : cost', this.update);
},
update: function(){
console.log(this.get("cost"));
},
//Remove this model from *localStorage*.
clear : function() {
this.destroy();
},
});
return model;
});
Können wir den code für das " Rückgrat.Modell' und wie Sie die Einstellung der Optionen.Modell'?
Können wir sehen, den code, wo Sie diese
Bearbeitet : Hinzugefügt wurde die Funktion update und Optionen.Modell
Können wir sehen, den code, wo Sie diese
updateModel
-Funktion?Bearbeitet : Hinzugefügt wurde die Funktion update und Optionen.Modell
InformationsquelleAutor Amateur | 2012-08-22
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nur tun
statt
Das Modell in eine Ansicht zündwinkel erreichen Sie über diese.Modell nicht.Optionen.Modell
InformationsquelleAutor schacki
Ich Liebe ein gutes Rätsel. Hier ist meine beste Vermutung basierend auf dem, was ich sehe. Das problem ist wahrscheinlich sogar noch weiter zurück. Wo Sie rufen:
this.options.model
ist wahrscheinlich nicht das, was Sie denken, es ist. Es wäre hilfreich, um zu sehen, BEVOR dieser Ansicht, ist das instanzieren und übergeben.Optionen.Modell. BTW, mit Modellen und Kollektionen übergeben, in den Blick, kann man immer verkürzen, umthis.model
- Modell-Sammlung und eine Handvoll von anderen darin, dass Sie bekommen, direkt befestigt, um den Blick einmal übergeben.Ich gehe davon aus, dass in Ihrem
updateModel()
die folgende SCHEINEN zu funktionieren:Der Fehler kommt auf die
set()
, nicht die Zeilen. So ist die Annahme, dass Sie bestanden in einem Modell. Oder haben Sie? Meine wilde Vermutung ist, dass das, wasthis.options.model
tatsächlich ist, ist nur ein json-Objekt des Modells. Das könnte auch erklären, warum "sehen" Sie das Modell in Ihre Konsole, wenn Sie stringify es, aber dann Rückgrat der Proteste, wenn Sie anrufenset()
.Anstelle von JSON.stringify um dies zu testen.Optionen.Modell versuchen nur
console.log(this.options.model)
. Nun, Sie nicht haben, um zu testen, wirklich. Die Tatsache, dass das Rückgrat nicht finden könnenset()
auf dieses Objekt ist ein tell tale sign. Wenn Sie sehen nicht die Komplexität eines Rückgrat-Modell in der Konsole - es ist nicht ein Modell.Auch, für Test-und debugging-insbesondere Modelle, Neige ich dazu, verwenden Sie die
model.toJSON()
Funktion als quick-check, dass es ein Modell, und ich sehe Attribute erwarte ich.Lassen Sie uns wissen, wenn Sie weitere Hinweise.
InformationsquelleAutor jmk2142