Ich habe zwei Ansichten - eine Layout-Ansicht, die oberste Ebene ist, und eine neue Formularansicht, die als untergeordnetes Element für das Layout fungiert und darin gerendert wird. Ich habe einen Ereignishandler in der Formularansicht, der eine neue Instanz meines Modells gemäß den Daten aus der Eingabe erstellen soll.Backbone-Ereignishandler funktioniert nicht
Hier ist die Layout-Ansicht:
var LayoutView = Backbone.View.extend({
el: "#layout",
render: function (view) {
this.child = view;
if (this.child) {
this.child.remove();
}
this.$el.html(this.child.render().el);
return this;
}
});
und hier ist meine Form Ansicht:
var ResumeForm = Backbone.View.extend({
events: {
'click #create': 'createResume'
},
initialize: function() {
this.template = _.template($('#new-resume').html());
},
render: function() {
this.$el.html(this.template());
return this;
},
createResume: function() {
// getting values from template inputs and saving them to model
var resume = new Resume({
profession: $('#profession').val(),
firstName: $('#firstname').val(),
lastName: $('#lastname').val()
});
// saving a new model to collection instance
resumes.add(resume);
resume.save(null, {
success: function (res) {
console.log("POST resume id " + res.toJSON().id);
},
error: function() {
console.log("Failed to POST");
}
});
}
});
Meine Form Ansicht perfekt in meinem Layout-Ansicht macht, aber wenn ich die Werte eingeben und #create
Schaltfläche klicken, nichts passiert - weder speichert das Modell noch protokolliert einen Fehler Fehler von meiner createResume
Methode. Ich vermute, dass beim Rendern einer Formularansicht in der Layoutansicht die Zeile this.$el.html(this.child.render().el);
nur alle Ereignislistener zerstört, denn wenn ich diese Listener zur Layoutansicht hinzufüge, funktioniert es.
Gibt es Möglichkeiten, dieses Problem zu beheben?
Danke viel, Emile! Das hat perfekt funktioniert. Ich denke, ich sollte die Dokumente mehr lesen. Jetzt gibt es ein anderes Problem - wenn ich auf "# create" -Button klicke, wirft es den folgenden Fehler auf: 'backbone.js: 1907 Uncaught Error: Eine" URL "-Eigenschaft oder -Funktion muss angegeben werden, aber das ist für diese Frage nicht relevant – AlexNikolaev94
@ AlexNikolaev94 dieser Fehler hat mit Ihrem 'Resume'-Modell zu tun, das keine 'urlRoot'-Eigenschaft hat oder sich in einer Sammlung befindet, die eine' url'-Eigenschaft hat. –
es existiert genau in einer Sammlung, die eine 'URL'-Eigenschaft hat. Soll ich es entfernen und 'urlRoot' -Eigenschaft zum Modell hinzufügen? – AlexNikolaev94