Javascript 刷新hasherJS/crossroadsJS路由

Javascript 刷新hasherJS/crossroadsJS路由,javascript,jquery,handlebars.js,crossroadsjs,Javascript,Jquery,Handlebars.js,Crossroadsjs,我在一个由把手驱动的水疗中心使用crossroadsJS和hasherJS。回想起来,我可能应该把整个事情都建立在余烬上,但现在晚些时候重新开始是不明智的 我已经设置了散列路由,可以根据单击的内容切换我的把手模板。我可以在路线之间来回移动,没有问题。但是,如果我刷新页面,我总是会返回到我的#/home视图。我对window.onhashchange和window.onbeforeunload做了一些研究,但这些似乎都不能解决问题 我有一个非常具体的方式来处理我的观点。我有一个全局视图对象,其构造

我在一个由把手驱动的水疗中心使用crossroadsJS和hasherJS。回想起来,我可能应该把整个事情都建立在余烬上,但现在晚些时候重新开始是不明智的

我已经设置了散列路由,可以根据单击的内容切换我的把手模板。我可以在路线之间来回移动,没有问题。但是,如果我刷新页面,我总是会返回到我的#/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();
};
views.procedures=函数(模板){
this.initialize=函数(){
this.el=$('');
这个.el.attr('id','procedures');
this.el.on('click','.returned list li a',this.toResults);//按名称列出API对象
};
this.render=函数(){
变量部分={
标题:“过程视图”,
};
html(模板(部分));
归还这个;
};
this.toResults=函数(){
cache.justClicked=$(this.attr('data-id');
addRoute('procedures/{name}',function(){
api.endpoints.procedure(cache.justClicked);//在别处构造
});
};
这是初始化();
};
我之所以提到这一点,是因为我不能简单地为
$(document).ready()
$(window).onhashchange


我已经多次阅读了hasherJS和crossroadsJS文档,但是我想不出任何方法来解决刷新问题。提前感谢您的帮助。

我需要您提供更多信息,但我假设您正在这样做

var DEFAULT_HASH = 'home';

if (! hasher.getHash()) {
    hasher.setHash(DEFAULT_HASH);
}
这基本上是说,您的默认路线始终是您的主路线,这就是为什么您在刷新当前路线时会看到它。请尝试以下操作:

var DEFAULT_HASH = 'home', url = hasher.getBaseURL();

if (hasher.getURL() === url) {
    hasher.setHash(DEFAULT_HASH);
}
这将检查您的基本URL是什么(第一次访问页面时加载的URL),并将
#/home
路由附加到基本URL,允许您刷新当前查看的路由

希望这有帮助