我显然忽略了显而易见的一点,但这已经是漫长的一天了。
下面的代码在浏览器中创建一个无限循环:
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();
}
});
有什么区别?
(是的,我使用本地存储模型而不是集合,但模型是一个单例,不存在于集合中。)
change
事件将参数传递给它的处理程序,如果save
带参数调用,它将它们作为新属性应用到模型中,并引起change
事件(传递属性以保存…这导致了变化……等)