使用 backbone,是否有任何方法可以在历史中存储一些数据,以便在调用 back 时可以检索这些数据?
在非主干应用程序中,应用程序将类似于以下内容。执行 Action 时:
//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;
我需要在我的主干应用程序上应用相同的行为。
谢谢
最佳答案
在这一点上,直接使用 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
关于javascript - backbone 和 history 推送状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10530402/