如何在保存Backbone模型时触发事件?

时间:2012-01-16 17:14:13

标签: javascript events binding backbone.js

如果我正确地完成了我的作业,我就会发现Backbone没有使用模型的保存方法保存模型时触发的内置保存事件(即使有是一个销毁事件。

我还了解到Backbone有一个很好的机制,可以使用Backbone.Events对象创建自定义事件。使用后者的作品,但我的印象是它不够精细,不能满足我的需求。

我的设置如下。我有一个由行(视图)构成的表(视图),每行都有一个模型的引用。保存模型后,我想更新/渲染行以反映更改。

如何创建在保存模型时触发的保存事件,以便更新引用该模型的表行(视图)?

换句话说,我希望能够做到以下几点:

this.model.bind('save', this.render);

2 个答案:

答案 0 :(得分:18)

就在3天前,当成功保存模型时,向Backbone发出commit,触发sync事件。但是,此提交尚未发布,因此如果要使用它,则需要从github帐户下载源代码。

View = Backbone.View.extend({
  initialize: function() {
    _.bindAll(this, 'onModelSaved');
    this.model.bind('sync', onSuccessCallback);
  },

  onModelSaved: function(model, response, options) {
    //perform your after save logic
  }
});

答案 1 :(得分:10)

从Backbone.js 1.0.0开始,如果模型成功保存,则会触发sync事件。

this.listenTo(this.model,'sync', this.render);

请注意,如果属性值发生变化,则会先针对相关属性触发change:attribute,然后是change事件,然后是sync事件。 无论模型如何变化,都会触发sync事件。它表示模型现在与服务器值同步。

此类事件仅在值有效时触发。即models.validate不应返回从服务器获取的这些值的任何错误。