Angular UI-Router,在 URL 刷新时找不到 [重复]

Posted

技术标签:

【中文标题】Angular UI-Router,在 URL 刷新时找不到 [重复]【英文标题】:Angular UI-Router, not found on URL refreshing [duplicate] 【发布时间】:2017-06-24 04:02:37 【问题描述】:

当我输入http://localhost:6060/home时,它显示我无法获取/home,但是当我单击按钮$state.go('home')时,它显示,并且URL仍然是http://localhost:6060/home。但是当我刷新时,它仍然没有显示。输入网址时如何显示?

这是我的代码:

路由器.js

$stateProvider.state("home", 
    url: "/home",
    template: "<h2>I am a router test</h2>"
);
$locationProvider.html5Mode(true);

index.html

<head>
    <title>for test</title>
    <base href="/">
</head>
<body ng-app="my.module">
    <h1>I am just a test</h1>
    <div ng-controller="test"><button class="btn btn-default" 
         ng-click="testclick()">click me</button></div>
    <ui-view></ui-view>
</body>

控制器:

$scope.testclick = function () 
   $state.go('home');
;

如果我不使用$locationProvider.html5Mode(true); 并且没有设置base 标签,我必须输入localhost:6060/#!/home! 是什么意思?

【问题讨论】:

您可以添加您的.config() 代码吗? 另见***.com/documentation/angularjs/3208/… 【参考方案1】:

您有服务器端(php、Node.js 等)吗?要使用html5Mode(true),您需要服务器端配置,它将所有路由转发到索引页面,因此您可以刷新页面而不会出现“无法获取”错误。


是什么!什么意思?

要理解这一点,您应该阅读 Angular documentation:感叹号字符 ! 是 hashbang 模式,它是默认 URL 格式,也是旧版浏览器中 HTML5 模式的后备。

【讨论】:

以上是关于Angular UI-Router,在 URL 刷新时找不到 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用 Angular ui-router 设置 URL 查询参数而不改变状态

Angular 没有使用 ui-router 响应任何路由 - 当我输入时 URL 就会消失

具有基本服务器文件问题的 Angular UI-Router

angularJs模块ui-router之路由控制

Angular ui-router 每个state的过滤器应该怎么添加

ui-router详解ngRoute工具区别