gpt4 book ai didi

javascript - 如何使用 hasher.js 和 crossroads.js 重新加载路线?

转载 作者:行者123 更新时间:2023-11-30 12:23:04 24 4
gpt4 key购买 nike

我目前有这段代码:

crossroads.addRoute('/login', function(){
$.ajax({
url: '/login',
type: 'GET',
data: {

},
success: function(msg) {
$('#' + main_window).html(msg);
}
})
});

连同这个用于维护历史的 hasher.js:

function parseHash(newHash, oldHash){
crossroads.parse(newHash);
}
hasher.initialized.add(parseHash); //parse initial hash
hasher.changed.add(parseHash); //parse hash changes
hasher.init(); //start listening for history change

$('a').on('click', function(e) {
e.preventDefault();
hasher.setHash($(this).attr('href'));
});

现在,当我有一个显示#/login 的链接并单击它时,登录页面加载正常。但是,如果用户再次单击登录链接,页面不会重新加载。我知道点击正在注册,但路由/散列没有触发。我如何设法做到这一点?

如有任何帮助,我们将不胜感激。谢谢!

最佳答案

您没有使用 hasher.setHash("#/currentpage") 更改任何内容,因为您已经在该页面上。所以 change 事件永远不会被触发。你可能只是去:

$('a').on('click', function(e) {
e.preventDefault();
hasher.setHash('');
hasher.setHash($(this).attr('href'));
});

但这会使历史困惑,因此如果您使加载方法可用,则可以强制重新加载点击:

var loadLogin = function(){
$.ajax({
.... your ajax settings ....
});
};
crossroads.addRoute('/login', loadLogin);

$('a').on('click', function(e) {
e.preventDefault();
var newHash = $(this).attr('href');
if(newHash === '/login' && hasher.getHash() === '/login') {
loadLogin()
} else {
hasher.setHash(newHash);
}
});

编辑正如@Patchesoft 指出的那样,crossroads 有一个名为 ignoreState 的属性,它将强制任何请求通过路由器功能,即使在当前页面上 - https://millermedeiros.github.io/crossroads.js/#crossroads-ignoreState

关于javascript - 如何使用 hasher.js 和 crossroads.js 重新加载路线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30386060/

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