在客户端和服务器之间的更改循环上保存 Backbone 模型

zf2sa74q  于 2022-11-10  发布在  其他
关注(0)|答案(2)|浏览(137)

在我的 Backbone.js 模型中,当发生更改事件时,我调用保存。

myModel = Backbone.View.extend({

  initialize: function() {
    var self = this;
    self.model.on("change", function() { self.model.save(); });
  }

});

从Backbone文档中,我了解到Backbone期望从服务器上获取一个json对象。
所以我把模型发送回客户端,然后backbone更新模型,这再次触发了change事件,导致它再次重新保存。
预防这种行为的建议方法是什么?

z6psavjg

z6psavjg1#

通常在 Backbone.js 中,当你不希望你的动作产生副作用时,你只需传递一个silent: true选项。例如:

self.model.on("change", function() { self.model.save({silent: true}); });

我还没有测试过这个能不能解决你的案子,但我怀疑它能。

px9o7tmv

px9o7tmv2#

一种更简洁的写法是:

//inside you model
initialize: function () {
    this.on('change',function(){ this.save(null,{silent: true}); });
}

如文档www.example.com所示backbonejs.org/#Model-save。
第一个参数是属性,第二个参数是选项。

相关问题