gpt4 book ai didi

angularjs - 如何让 AngularJS ui-router 正确响应浏览器页面刷新?

转载 作者:行者123 更新时间:2023-12-01 09:24:26 25 4
gpt4 key购买 nike

我创建了一个使用 ur-router 的 AngularJS 应用程序。这是配置的一个小示例:

 $locationProvider.html5Mode(true);

var admin = {
name: 'admin',
url: '/Admin',
views: {
'root': {
templateUrl: '/app/admin/partials/home.html',
},
'content': {
templateUrl: '/app/admin/partials/overview.html',
}
}
};

var adminContent = {
name: 'admin.content',
parent: 'admin',
url: '/:content',
views: {
'root': {
templateUrl: '/app/admin/partials/home.html',
},
'content': {
templateUrl: function (stateParams) {
return '/app/admin/partials/' + stateParams.content + '.html';
},
}
}
};

当我启动应用程序时一切正常,然后通过链接转到/Admin,然后我转到引用链接,它会打开页面:

http://xx.com/Admin/reference

当我单击浏览器返回按钮时,它会按预期返回到上一页。

但是,如果我现在进行刷新,一切都会出错。它忘记了 ui-router 并尝试查找页面:xx.com/Admin/Reference

作为引用,我正在使用:@version v0.2.13

我的索引文件如下所示:

<head>
<base href="/" />

有人可以给我一些关于我做错了什么的建议吗?

最佳答案

发生这种情况是因为您使用的是 HTML5 模式。您可以禁用它或配置您的服务器来处理它。

当您单击页面上的链接时,javascript 会更改显示的 url,但实际上并没有导航到新的 url。刷新时,浏览器会向服务器请求新的 url。服务器将其视为常规请求,但该 url 没有任何页面,因此它返回 404。您可以配置服务器以将任何 url 重定向到您的主页,这样就不会发生这种情况。当您刷新(使用正确的配置)时,服务器将发回 index.html(或任何您的主页),并且 javascript 可以从 url 中获取参数。

本文档解释了如何在 ui-router 中配置服务器。 https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode

您还需要一个 <base> 标记以便 Angular 可以区分 url 参数和 url 的其余部分。

示例 <base>标签:

如果您的网站是 http://www.example.com/并且您在管理页面 ( http://www.example.com/Admin ),您的基本标签看起来像 <base href="http://www.example.com/">

有关 Angular 中不同路由模式的更多信息,请参阅:https://docs.angularjs.org/guide/$location

关于angularjs - 如何让 AngularJS ui-router 正确响应浏览器页面刷新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707711/

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