3

使用主干,有什么方法可以在历史记录中存储一些数据,以便在调用 back 时可以检索它?

在非主干应用程序中,我的应用程序将类似于以下内容。执行动作时:

//When doing some action
history.pushState(mycurrentData, title, href)

以及以下内容以恢复当前数据以防万一:

function popState(event) {  
    if (event.state) { 
        state = event.state;
        //get my data from state
    }
}
window.onpopstate = popState;

我需要在我的主干应用程序上应用相同的行为。

谢谢

4

1 回答 1

6

此时,直接使用 Backbone 是不可能的

http://backbonejs.org/docs/backbone.html#section-139

您可以在代码中的该点看到几行:

window.history[options.replace ? 'replaceState' : 'pushState']({}, document.title, frag);

因此,它一直将数据设置为一个空对象。

那么,要使这项工作正常进行,您必须自己存储数据,并在路由触发时使用其他方法来检索数据。

就个人而言,我认为值得修补 Backbone 以允许在历史中存储数据。但这是 Backbone 问题列表的一个想法 :)

编辑

看起来有人想这样做,但被击落:https ://github.com/documentcloud/backbone/pull/660

于 2012-05-10T14:03:16.237 回答