我正在寫一個通常在網上找到的Backbone Todos應用程序的稍微修改版本,而不是使用書籍。我的骨幹版本是1.3.3。就像這個例子一樣,現在我只是試圖在輸入列表中顯示用戶添加的書名。我的代碼(部分)如下給出:Backbone collection add event not firing
app.BookList = Backbone.Collection.extend({
model: app.Book,
// For temp use, to be replaced with URL
localStorage: new Backbone.LocalStorage('BookList')
});
app.bookList = new app.BookList();
app.AppView = Backbone.View.extend({
el: '#app',
initialize:() => {
this.input = this.$('#book-name');
app.bookList.on('change', this.addOneBook, this);
app.bookList.fetch();
},
events: {
'keypress #book-name': 'createNewBookModel'
},
addOneBook: (book) => {
console.log('BOOK: ', book);
const b = new app.BookView({ model: book });
this.$('#bookList').append(b.render().el());
},
createNewBookModel: (e) => {
if (e.which === 13) {
e.preventDefault();
app.bookList.create({ title: this.input.val().trim() });
this.input.val('');
}
}
});
app.appView = new app.AppView();
我的問題是addOneBook
事件不點火,之後createNewBookModel
事件已觸發並完成。我的理解(閱讀 - http://backbonejs.org/#Collection-create)是,創建模型將觸發集合上的add
事件。我嘗試使用bind
而不是on
,但那不起作用。我也試過this.listenTo
代替on
,但是那個提示錯誤,說沒有定義this.listenTo
。請幫忙。謝謝!
[Backbone arrow function and this]的可能的副本(https://stackoverflow.com/questions/41536327/backbone-arrow-function-and-this) –