骨干同步失败后撤消视图更改

时间:2013-05-10 06:16:58

标签: backbone.js backbone-views

我对骨干的视图渲染很困惑。我需要你的帮助。

例如,我有一个专辑视图。它的渲染方法呈现每个Track视图。所有跟踪特定事件都在“跟踪”视图中绑定。

现在,Track视图正在聆听它的模型。例如:

this.model.on('destroy', this.destroy, this);

destroy: function(model){
    this.close();
},

因此当轨道被销毁时,视图将从UI中删除,这很好。但问题是同步。视图将从UI中删除,而不是从服务器中删除。如果同步成功,则与视图无关。

但是,如果同步不成功,我想撤消此视图更改(恢复轨道标记在我销毁之前的位置)。

任何人都可以告诉我该怎么做?

FYI, 之前我从服务器获得成功后改变了用户界面。但是在超过98%的情况下我们获得了成功,我们决定立即更改UI并在出现错误时进行恢复。

2 个答案:

答案 0 :(得分:1)

有一个很棒的插件可以解决这个问题:https://github.com/derickbailey/backbone.memento

答案 1 :(得分:0)

我在model.destroy的成功回调中调用了view.remove(),我认为它更容易阅读代码并理解这种情况会发生什么。

但是如果你真的想恢复sync​​.error上的视图,我想你可以在你的destroy调用的错误回调中调用一个恢复方法。但恢复它比等待确认更有意义。