1

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

例如,我有一个相册视图。它的 render 方法渲染每个 Track 视图。所有轨道特定的事件都绑定在轨道视图中。

现在,Track view 正在监听它的模型。例如:

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

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

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

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

谁能告诉我该怎么做?

仅供参考,早些时候我在从服务器获得成功后更改了 UI。但是在超过 98% 的情况下,我们都获得了成功,我们决定立即更改 UI,并在出现错误时恢复。

4

2 回答 2

1

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

于 2013-07-05T16:57:53.887 回答
0

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

但是,如果您真的想恢复 sync.error 上的视图,我想您可以在销毁调用的错误回调中调用 restore 方法。但是感觉恢复它比等待确认更多的工作。

于 2013-05-10T06:40:08.700 回答