動作しません。フォームビューには、入力からのデータに応じてモデルの新しいインスタンスを作成する予定のイベントハンドラが1つあります。バックボーンイベントハンドラは、私は2つのビューを持っている
ここレイアウトビューです:
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;
}
});
とここに私のフォームビューです:
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");
}
});
}
});
マイフォームビューは完全に私のレイアウトビュー内でレンダリングするが、私は値を入力して#create
ボタンをクリックすると、何も起こりません - 私のモデルは保存されず、私のcreateResume
メソッドのエラーミスも記録されません。レイアウトビューでフォームビューをレンダリングすると、this.$el.html(this.child.render().el);
という行は、これらのリスナーをレイアウトビューに追加すると動作するため、すべてのイベントリスナーを破棄するものと思われます。
は、この問題をオーバーライドする任意の方法はありますか?
、あなたにエミールをたくさんありがとうございました!それは完璧に働いた。私はもっとドキュメントを読むべきだと思います。 'BACKBONE.JS: - 今、別の問題があると私は#のcreate'ボタン'をクリックすると、それは私に次のエラーがスローされます1907不明なエラー:A「URL」プロパティまたは関数がspecified'しなければならないが、それはこの質問 – AlexNikolaev94
とは無関係です@ AlexNikolaev94というエラーは、 'url'プロパティを持たない' Resume'モデルや、 'url'プロパティを持つコレクションの中にあるということです。 –
'url'プロパティを持つコレクションの中に正確に存在します。私はそれを削除し、代わりに 'urlRoot'プロパティをモデルに追加しますか? – AlexNikolaev94