Javascript Backbone.js集合不';t侦听模型更改事件
我刚刚开始使用backbone.js创建spa。我试着让一本藏书听模型的改变,但什么也没发生。这是模型和集合:Javascript Backbone.js集合不';t侦听模型更改事件,javascript,backbone.js,javascript-events,Javascript,Backbone.js,Javascript Events,我刚刚开始使用backbone.js创建spa。我试着让一本藏书听模型的改变,但什么也没发生。这是模型和集合: var Book = Backbone.Model.extend({ idAttribute: 'id', defaults: { id: null, title: '', author: '', completed: false } }); var BooksCollection = Backbone.Collection.exte
var Book = Backbone.Model.extend({
idAttribute: 'id',
defaults: {
id: null,
title: '',
author: '',
completed: false
}
});
var BooksCollection = Backbone.Collection.extend({
model: Book,
url: 'books',
initialize: function() {
this.listenTo(this.model, 'change', this.debug);
},
debug: function () {
console.log('something happened !!!');
}
});
这是一种观点:
var BookView = Backbone.View.extend({
template: _.template($('#viewBook').html()),
events: {
"click #save": "bookSave"
},
initialize: function() {
this.listenTo(this.model, 'change', this.render);
},
render: function() {
$(this.el).html(this.template(this.model.toJSON()));
return this;
},
bookSave: function() {
this.model.set({author: "nobody"});
}
});
当我点击#save(保存)按钮时,作者已更改,但没有任何记录。我错在哪里?谢谢。模型中的事件会自动冒泡到集合中,因此您可以像下面这样直接收听模型更改:
// in the collection
initialize: function() {
this.listenTo(this, 'change', this.debug);
},
它使用save()向服务器发送请求。我只想更改集合模型属性值。集合不能侦听属性更改吗?它们只能侦听同步事件吗?您确定视图和模型引用的是同一个模型吗?可以显式创建新模型并将其传递给视图。