骨干和历史推动状态

时间:2012-05-10 08:43:06

标签: javascript backbone.js browser-history backbone-routing

使用骨干,是否可以在历史记录中存储一些数据,以便在调用背面时可以重新获取数据?

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

//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;

我需要在我的骨干应用上应用相同的行为。

由于

1 个答案:

答案 0 :(得分: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