更改保存的主干模型 - 无限循环?

时间:2013-05-29 13:59:04

标签: backbone.js

我显然在这里忽略了显而易见的事情,但已经过了漫长的一天。

以下代码在浏览器中创建一个无限循环:

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();
    }
});

有什么区别?

(是的,我使用的是本地存储而不是集合,但模型是集合中不存在的单例。)

1 个答案:

答案 0 :(得分:5)

change事件将参数传递给其处理程序,如果使用参数调用save,它会将它们作为新属性应用于模型,并导致change事件(通过要保存的属性...导致更改......等等)