我构建了一个小型Web应用程序,我使用UI-Router来浏览其页面。除了浏览器刷新或使用状态链接访问特定页面之外,一切正常。我尝试了几个在同一主题上发布的解决方案,但由于缺乏其他信息,他们没有帮助。
当我点击下面的ui-sref链接时,我会得到“mysite / content'并且页面显示正常,但是一旦我刷新它或尝试通过粘贴链接访问它就找不到页面。
请您按照我的意愿帮助我。提前谢谢。
HTML
<p ui-sref="content">Link To Content</p>
AngularJS
var app = angular.module('myApp',['ui.router']);
app.config(['$stateProvider', '$urlRouterProvider', '$locationProvider', function($stateProvider, $urlRouteProvider, $locationProvider){
$urlRouteProvider.otherwise('/');
$stateProvider
.state('home', {
url: '/',
views: {
'': { templateUrl: '/app/templates/wrapper.html'},
'nav@home': { templateUrl: '/app/templates/nav.html'},
'header@home': { templateUrl: '/app/templates/header.html'},
'footer@home': { templateUrl: '/app/templates/footer.html'}
}
})
.state('content', {
url: '/content',
views: {
'': { templateUrl: '/app/templates/content.html'},
'nav@content': { templateUrl: '/app/templates/nav.html'},
'header@content': { templateUrl: '/app/templates/header.html'},
'footer@content': { templateUrl: '/app/templates/footer.html'}
}
});
$locationProvider.html5Mode(true);
}])
答案 0 :(得分:0)
将html5Mode设置为true,刷新页面时,浏览器会发出“mysite / content”请求。在经典的单页应用程序中,后端有一组响应某些数据的路由,并且通常配置为返回所有其他路由的应用程序index.html(例如'mysite / content')。 / p>
当您禁用html5Mode时,它会起作用,因为浏览器会在没有“#”后的部分的情况下向网址发出请求,因此您的后端肯定会返回预期的index.html。