【发布时间】:2016-02-13 19:18:22
【问题描述】:
在我的 Backbone 应用程序(Rails 后端)中,我使用 [Handlebars] Javascript 模板 (JST's) 来呈现我的 Backbone 视图。每当我在其中一个 URL 模板上进行浏览器刷新时,它都会跳回根 URL。我希望它在页面刷新后保留在当前模板上。我想做这样的事情......
getPage: function() {
$(window).on('beforeunload', function(){
var fragment = Backbone.history.fragment;
});
if (fragment === "this_current_template") {
return App.getCurrentTemplatePage(); // render it
} else if (fragment === "") {
return App.getFrontMainPage(); // render it
}
}
getPage 是我的主干App 对象中的一个方法。在$(window) 事件处理程序之外无法识别我的fragment 变量。即使我将fragment 设为全局变量,我似乎也找不到将我以前的Backbone.history.fragment 保存在变量中的方法。刷新后全部一扫而光。我知道Backbone.history.loadUrl(Backbone.history.fragment);,但我也无法让它发挥作用。它似乎只在浏览器刷新之前工作。
我必须在我的后端代码的root 路径中更改什么吗?或者有没有办法在页面重新加载时使用 Backbone / JS 来保持当前页面?对此的任何帮助将不胜感激!
【问题讨论】:
-
我会尝试 Backbone.history.navigate(yourRoute)... 默认情况下应该更改浏览器 url 栏而不重新加载页面。
-
非常感谢。我使用
sessionStorage.setItem('fragment', fragment);让它在刷新后保留片段。然后我使用了Backbone.history.navigate(fragment);来确保我访问了正确的 URL。
标签: javascript jquery ruby-on-rails backbone.js handlebars.js