我在由 handlebarsJS 提供支持的 SPA 上使用 crossroadsJS 和 hasherJS。回想起来,我可能应该在 Ember 上构建整个东西,但是在这么晚的时候重新开始是不明智的。
我设置了哈希路由,可以根据点击的内容切换我的车把模板。我可以毫无问题地在路线之间来回移动。但是,如果我刷新页面,我总是会回到我的 #/home 视图。我对 window.onhashchange 和 window.onbeforeunload 进行了一些研究,但这些似乎都没有解决问题。
我有一个非常具体的方式来处理我的观点。我有一个像这样构造的全局视图对象:
views.procedures = function (template) {
this.initialize = function () {
this.el = $('<div/>');
this.el.attr('id', 'procedures');
this.el.on('click', '.returned-list li a', this.toResults); // list of API objects by name
};
this.render = function () {
var parts = {
title: 'Procedures View',
};
this.el.html(template(parts));
return this;
};
this.toResults = function () {
cache.justClicked = $(this).attr('data-id');
crossroads.addRoute('procedures/{name}', function () {
api.endpoints.procedure(cache.justClicked); // constructed elsewhere
});
};
this.initialize();
};
我之所以提到这一点,是因为我不能简单地为 a$(document).ready()
或$(window).onhashchange
我已经多次阅读了 hasherJS 和 crossroadsJS 文档,但我想不出任何办法来解决刷新问题。提前感谢您的帮助。