Javascript 主干集合添加事件未触发
我正在编写一个略加修改的主干Todos应用程序版本,该应用程序通常在网上找到,使用的是书籍。我的主干版本是1.3.3。像这个例子一样,现在我只是尝试在输入列表中显示用户添加的图书标题。我的代码(部分)如下所示:Javascript 主干集合添加事件未触发,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在编写一个略加修改的主干Todos应用程序版本,该应用程序通常在网上找到,使用的是书籍。我的主干版本是1.3.3。像这个例子一样,现在我只是尝试在输入列表中显示用户添加的图书标题。我的代码(部分)如下所示: app.BookList = Backbone.Collection.extend({ model: app.Book, // For temp use, to be replaced with URL localStorage: new Backbone.LocalStor
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
事件触发并完成后没有触发。我的理解(阅读本文-)是,创建模型将触发集合上的add
事件。我尝试使用bind
而不是打开
,但没有成功。我还尝试了this.listenTo
来代替上的,但出现了一个错误,即,this.listenTo
未定义。请帮忙。谢谢 我从未广泛使用过ES6,但我认为它们可能会给您带来问题。据我所知,箭头函数不绑定这个
对象。在执行函数时,您的this
将计算为未定义的,甚至可能是窗口的父对象,但我认为您希望它计算为主干对象
尝试替换:
initialize: () => {
// ...
},
与:
initialize: function() {
// ...
},
其他方法也类似。我认为这将解决很多问题。我从未广泛使用过ES6,但我认为它们可能会给您带来问题。据我所知,箭头函数不绑定这个
对象。在执行函数时,您的this
将计算为未定义的,甚至可能是窗口的父对象,但我认为您希望它计算为主干对象
尝试替换:
initialize: () => {
// ...
},
与:
initialize: function() {
// ...
},
其他方法也类似。我想这会解决很多问题。可能重复的可能重复的可能重复的谢谢,那确实是问题所在!谢谢,这确实是问题所在!