在我的Backbone应用程序(Rails后端)中,我使用[Handlebars] Javascript模板(JST)来渲染我的Backbone视图。每当我在其中一个URL模板上进行浏览器刷新时,它就会跳回到根URL。我希望它在页面刷新后保留在当前模板上。我想做这样的事......
<div class="ficha_container">
<div class="ficha_row">
<div class="ficha_cell">
<h1>Title</h1>
<p>Content.</p>
</div>
</div>
</div>
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
事件处理程序之外识别我的fragment
变量。即使我将$(window)
设为全局变量,我也似乎找不到在变量中保留先前Backbone.history.fragment
的方法。这一切都在刷新后一扫而空。我知道fragment
,但我也无法做到这一点。它似乎只在浏览器刷新之前工作。
我需要在后端代码的Backbone.history.loadUrl(Backbone.history.fragment);
路由中进行更改吗?或者有没有办法在页面重新加载时使用Backbone / JS持久保存当前页面?对此的任何帮助将不胜感激!
答案 0 :(得分:0)
首先,您需要创建一个路由器。根据{{3}}:
var Router = Backbone.Router.extend({
routes: {
"main": "main"
},
main: function() {
// your code here
}
});
之后你只需要初始化Backbone docs:
Backbone.history.start({});
之后,Backbone将自动尝试为您的hashbang找到合适的路由并触发相应的操作。在给定的示例中,如果您的初始hashbang为#main
,则会执行Router.main
操作。