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

Bar*_*obs 13 javascript events binding backbone.js

如果我正确完成了我的作业,我就会发现Backbone没有使用模型的save方法保存模型时触发的内置保存事件(即使存在destroy事件).

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

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

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

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

this.model.bind('save', this.render);
Run Code Online (Sandbox Code Playgroud)

Pau*_*aul 18

就在3天前,对Backbone进行了提交,在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
  }
});
Run Code Online (Sandbox Code Playgroud)

  • 不幸的是,当从服务器获取模型时,也会触发`sync`事件,这不适合在从客户端推送代码时运行代码的需要. (13认同)
  • 我刚检查过,这段代码现在是主骨干分支的一部分. (4认同)

Ven*_*tra 10

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

this.listenTo(this.model,'sync', this.render);
Run Code Online (Sandbox Code Playgroud)

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

此外,只有值有效时才会触发这些事件.即models.validate不应该从服务器返回这些值的任何错误.