我需要一些帮助。我面临一些问题。使用 Angular.js 再次刷新后,我无法获取页面。我在下面解释我的代码。
路线.js:
var app=angular.module('demo',['ui.router']);
app.run(function($rootScope, $state) {
$rootScope.$state = $state;
});
compliance.config(function($stateProvider, $urlRouterProvider,$locationProvider) {
$urlRouterProvider.otherwise('/');
$stateProvider
.state('/', {
url: '/',
templateUrl: 'View/demo1.html',
controller: 'demoController'
})
.state('demo2', {
url: '/demo2',
templateUrl: 'View/demo2.html',
controller: 'demo2Controller'
})
$locationProvider.html5Mode({
enabled: true,
requireBase: true
});
});
索引.html:
<div ui-view></div>
演示1.html:
演示控制器.js:
$scope.goToAuditDetailPage=function(){
$state.go('demo2',{}, { reload: true });
}
在这里,当用户打开链接http://localhost/NABH/
demo1.html
页面将出现并且该页面内有一次单击事件时,当用户单击该链接时,demo2.html
页面即将到来并且URL http://localhost/NABH/demo2
。但是在这种情况下,当用户再次刷新该链接http://localhost/NABH/demo2
时,会出现此The requested URL /NABH/demo2 was not found on this server.
错误。在这里,我需要刷新后该页面也应按预期工作。请帮忙。
您正在对路由使用 html5mode,因此浏览器会更改应用程序的路由,因为它们来自服务器,当用户按下刷新按钮时,浏览器会发送带有客户端路由的请求,而您的服务器不知道它。
最简单的解决方案之一是使用客户端应用程序使服务器"应答"所有路由,这样,客户端路由的请求使用 index.html shell 应答(就像导航到 /
时应答的那样),客户端应用程序将检查当前路由并呈现正确的页面(它是自动完成的)。