2012-01-16 128 views
13

如果我做我的功课正确的,我是来学习的是骨干网不具有内置当模型使用模型的保存方法(即使有一个破坏事件保存时触发保存事件)。如何在保存骨干模型时触发事件?

我还了解到Backbone有一个用于使用Backbone.Events对象创建自定义事件的漂亮机制。使用后者的作品,但我有这样的印象,它不足以满足我的需求。

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

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

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

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

回答

17

就在3天前,一个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 
    } 
}); 
+4

我刚查过,这段代码现在是主干骨干分支的一部分。 – 2012-08-22 19:47:31

+13

不幸的是,当从服务器获取模型时,也会触发'sync'事件,这不适合仅在从客户端推送代码时运行代码的需要。 – Esteban 2013-07-02 20:29:29

+0

另一个解决方案** this.model.bind('sync',this.render,this); ** – 2014-11-11 11:04:55

9

由于Backbone.js的1.0.0你如果模型保存成功,则触发事件sync

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

注意的是,change:attribute首先解雇相关的属性,如果没有在属性值的变化,其次是change事件再其次是sync事件。 sync无论模型发生什么变化,都会触发事件。这表示该模型现在与服务器值同步。

而且这些事件只有在值有效时才会触发。即models.validate不应该返回从服务器获得的这些值的任何错误。