gpt4 book ai didi

javascript - 刷新 hasher JS/crossroads JS 路由

转载 作者:行者123 更新时间:2023-11-30 00:34:45 24 4
gpt4 key购买 nike

我在一个由 handlebarsJS 提供支持的 SPA 上使用 crossroadsJS 和 hasherJS。回想起来,我可能应该在 Ember 上构建整个东西,但已经晚了,重新开始并不明智。

我设置了哈希路由,可以根据点击的内容切换我的 Handlebars 模板。我可以毫无问题地在路线之间来回移动。但是,如果我刷新页面,我总是会回到我的#/home View 。我对 window.onhashchange 和 window.onbeforeunload 做了一些研究,但这些似乎都没有解决问题。

我有一个非常具体的方式来处理我的观点。我有一个像这样构造的全局 View 对象:

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();
};

我提到这一点是因为我不能简单地为 $(document).ready()$(window).onhashchange< 中的任何类型的哈希更改添加 JQuery 监听器

我已经多次阅读 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 是什么(您第一次访问该页面时加载的那个)并将 #/home 路由附加到基本 URL,允许您刷新当前查看路线。

希望这对您有所帮助。

关于javascript - 刷新 hasher JS/crossroads JS 路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27713801/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com