我对angularJs中的路由器有一些疑问。我使用了angular-ui-router。但是当我在带有$ locationProvider的url中删除了#标签时,我会收到错误。如何解决这个问题?,在我的模块中:
.config(function($stateProvider, $urlRouterProvider, $locationProvider){
$stateProvider
.state('locale',{
url: '/locale',
templateUrl: 'template/static/locale.html'
})
.state('callback',{
url: '/callback',
templateUrl: 'template/static/callback.html',
controller: 'userCalendar'
})
.state('sign_in',{
url: '/sign_in',
templateUrl: 'template/users/sign_in.html'
})
.state('addprofile', {
url: '/addprofile',
templateUrl: 'template/users/addprofile.html'
})
.state('tabs',{
url: '/tabs',
templateUrl: 'template/pages/tabs.html'
})
.state('tabs.mainMenu', {
url: '/mainMenu',
templateUrl: 'template/pages/mainmenu.html'
})
.state('form',{
url: '#/form',
templateUrl: '/template/users/form.html'
})
$urlRouterProvider.otherwise('locale');
$locationProvider.html5Mode({
enabled: true,
requireBase: true
});
});

感谢您的关注
答案 0 :(得分:0)
删除哈希路由后,您将遇到此刷新问题(即使没有Cordova)。我看到您已在app.js
配置中使用 requireBase 进行 $ locationProvider 设置:
$locationProvider.html5Mode({enabled: true, requireBase: true});
这意味着您还需要在index.html
中设置基本网址:
<html ng-app="myApp">
<head>
<title>AngularJS</title>
<base href="http://localhost:8888/angularjs-website-folder/">
您还需要配置服务器URL重写规则。以下是使用网站文件夹中的.htaccess
文件的MAMP localhost解决方案:
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine On
RewriteBase /angularjs-website-folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(css|js|html|png|jpg|jpeg|gif|txt)
RewriteRule (.*) index.html [L]
</IfModule>
注意:第一个 RewriteBase 应该是相对链接,而index.html中的基本网址是绝对的。