SOを見回しましたが、役に立つものが見つかりませんでした。
連絡先カードビューのBackbone.js連絡先モデルがあります。このビューには、連絡先情報を編集できる多くの入力があります。
ページにはバックボーンモデルではない他の多くのフォームがあるので、それらは「保存ボタン」を使用して保存します。私は基本的にこの保存ボタンもトリガーしたいですContacts.CardView.saveCard();
(おそらくそうかもしれませんFileApp.cardView.saveCard as well?
-私のコードのいくつかは以下にあります。
これを行う方法はありますか?私は次のものを使用できると思っていましたが、ビューの外にあるものにイベントをバインドしないようです?:
events: {
"change input": "change",
"click #save": "saveCard"
},
$('#save').click(function() {
FileApp.cardView.saveCard;
_SAVE.save();
})
CardView
window.Contacts.CardView = Backbone.View.extend({
events: {
"click #save": "saveCard" // doesnt work because #save is outside the view?
},
saveCard: function(e) {
this.model.set({
name:$('#name').val()
});
if (this.model.isNew()) {
var self = this;
FileApp.contactList.create(this.model, {
success:function () {
FileApp.navigate('contacts/' + self.model.id, false);
}
});
} else {
this.model.save();
}
return false;
}
}
ルーター:
var FileRouter = Backbone.Router.extend({
contactCard:function (id) {
if (this.contactList) {
this.cardList = new Contacts.CardCollection();
var self = this;
this.cardList.fetch({
data: {
"id":id
},
success: function(collection, response) {
if (self.cardView) self.cardView.close();
self.cardView = new Contacts.CardView({
model: collection.models[0]
});
self.cardView.render();
}
});
} else {
CONTACT_ID = id;
this.list();
}
}
});
var FileApp = new FileRouter();