【问题标题】:Backbone Model on change save - infinite loop?更改保存的主干模型 - 无限循环?
【发布时间】:2013-05-29 13:59:03
【问题描述】:

我显然在这里错过了明显的东西,但已经是漫长的一天了。

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

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

有什么区别?

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

【问题讨论】:

  • 您是否尝试使用silent: true 选项以使您的保存不会触发更改事件?

标签: backbone.js


【解决方案1】:

change 事件将参数传递给它的处理程序,如果使用参数调用 save,它会将它们作为新属性应用到模型,并引发 change 事件(将属性传递给保存...这会导致变化......等等)

【讨论】:

  • 甜蜜!我知道这很明显。谢谢! (来自文档:“使用新属性调用保存将立即导致“更改”事件”)
猜你喜欢
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 1970-01-01
  • 2012-12-22
  • 2013-11-19
  • 1970-01-01
  • 2013-08-10
  • 1970-01-01
相关资源
最近更新 更多