我显然在这里忽略了显而易见的事情,但已经过了漫长的一天。
以下代码在浏览器中创建一个无限循环:
M = Backbone.Model.extend({
localStorage: new Backbone.LocalStorage("ModelName"),
initialize: function() {
this.on("change", this.save, this);
}
});
虽然以下代码可以正常工作:
M = Backbone.Model.extend({
localStorage: new Backbone.LocalStorage("ModelName"),
initialize: function() {
this.on("change", this.modelChanged, this);
},
modelChanged: function() {
this.save();
}
});
有什么区别?
(是的,我使用的是本地存储而不是集合,但模型是集合中不存在的单例。)
答案 0 :(得分:5)
change
事件将参数传递给其处理程序,如果使用参数调用save
,它会将它们作为新属性应用于模型,并导致change
事件(通过要保存的属性...导致更改......等等)