javascript - backbone 和 history 推送状态

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

使用 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/

相关文章:

javascript - JQuery 虚拟键盘和 Datatables.js 搜索过滤器框未根据用户输入更新

javascript - 如何在reactjs上加载页面时显示组件

javascript - 随机播放功能不适用于点击按钮

javascript - 在从服务器接收数据之前,如何防止方法触发?

javascript - History.js 替换错误内容

javascript - 阻止浏览器保存 URL

javascript - 创建一个随着页面滚动而移动的 float 小部件

javascript - 在主干中异步添加事件

javascript - 使用 AMD (require.js) 时如何在 Backbone.js 中加载自举模型

javascript - 如何防止浏览器在哈希更改时滚动到顶部?