在 ngRoute 中刷新页面时找不到页面
page not found when refresh a page in ngRoute
我正在使用angularjs ngRoute来路由单个页面应用程序。它显示本地主机/关于或本地主机/博客。当我重新加载时,"无法获取/关于"。我该如何解决这个问题。
我的路由器配置如下。
var myApp = angular.module('myApp',['ngRoute']);
myApp.config(['$locationProvider','$routeProvider',function($locationProvider,$routeProvider){
$locationProvider.html5Mode(true);
$routeProvider
.when('/',{
templateUrl: 'views/pages/home.html',
controller: 'homeCtrl'
})
.when('/about',{
templateUrl: 'views/pages/about.html',
controller: 'aboutCtrl'
})
.when('/contact',{
templateUrl: 'views/pages/contact.html',
controller: 'contactCtrl'
})
.when('/blog',{
templateUrl: 'views/pages/blog.html',
controller: 'blogCtrl'
})
.otherwise({redirectTo: '/home'});
}]);
我只使用角度。
这是因为这段代码
$locationProvider.html5Mode(true);
将其设置为 false
将在每个 url 的开头添加一个#
,因此无论您重新加载哪个页面,服务器都会为您提供索引页。
您可能使用的是服务器路由,而不是 AngularJS 路由。默认情况下,AngularJS使用路由后#
路由URL路由。例如 http://localhost:8080/#/about。
此外,您可以将HTML5路由与使用$locationProvider.html5Mode(true)
一起使用,我猜您正在使用http://localhost:8080/about
路由。
文档对 AngularJS 路由不是很清楚。它谈到了Hashbang和HTML5模式。事实上,AngularJS路由以三种模式运行:
- 哈希邦模式
- HTML5 模式
- HTML5模式下的哈希邦
这是因为您使用的是浏览器不支持的HTML5模式。如上所述@Mumpo。
您应该更改此行
$locationProvider.html5Mode(true);
到此行
$locationProvider.html5Mode(false);
这将启用哈希邦模式,并在您的 URL 之前附加一个 # 符号
有关这三种模式的进一步深入了解。请参考这个 Stackoverflow 问题 这里.希望这会有所帮助
相关文章:
- 气质的“nestRemoting()”有时可以'找不到关系
- 错误405:向Java控制器(Ajax)发送JSON时找不到POST方法
- 找不到模块捆绑包
- for循环中的javascript if语句找不到==
- 为什么JavaScript可以'找不到给定的InnerHTML并返回Cannot set property
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- Babel编译错误:找不到模块核心js/library/fn/get迭代器
- [Vue warn]:找不到元素
- ngRoute找不到模板
- 未能加载,因为找不到支持的源.当播放HTML5音频元素时
- 因果报应-找不到模块:错误:无法解析模块'scs'
- Angular 2:在本地.json文件上找不到文件
- module.js在运行iron节点时找不到模块
- 放大弹出生成“;找不到文件”;YouTube视频的错误
- 我发现了一些只在移动设备上可见的垃圾邮件链接,我可以'找不到包含此垃圾邮件链接的脚本的位置
- Web 地址虚拟目录会断开外部 JavaScript 链接,因此找不到文件
- Meteor.js可以'找不到语义:ui包
- 找不到容器:goog.Disposable.instances _在为javascript工具使用泄漏查找器时出错
- 当显示找不到服务器错误页面时,如何刷新页面/框架
- 在 ngRoute 中刷新页面时找不到页面