[英]Backbone collection add event not firing
我正在编写通常在网上找到的Backbone Todos应用程序的稍作修改的版本,而是使用书籍。 我的骨干网版本是1.3.3。 像示例一样,现在我只是试图显示用户在输入列表中添加的书名。 我的代码(部分)如下:
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();
我的问题是,在createNewBookModel
事件已触发并完成后, addOneBook
事件未触发。 我的理解(阅读本文-http://backbonejs.org/#Collection-create )是,创建模型将触发集合上的add
事件。 我尝试使用bind
而不是on
,但这没有用。 我也尝试使用this.listenTo
代替on
,但这引发了错误,说this.listenTo
未定义。 请帮忙。 谢谢!
我从未广泛使用过ES6 箭头功能 ,但我认为它们可能在这里给您带来麻烦。 据我了解,箭头函数不会绑定this
对象。 在执行函数时, this
函数的值将评估为undefined,甚至可能是window
父对象,但我认为您希望其对主干对象进行评估。
尝试更换:
initialize: () => {
// ...
},
与:
initialize: function() {
// ...
},
和其他方法类似。 我认为这将解决许多问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.