我只是注意到我在所有路线中都有哈希(#!)之后有感叹号,我不知道我是怎么回事以及为什么我得到它们因为今天我没有它们,是否有任何解决办法摆脱如果有人能解释我是什么,以及我是如何得到它的,我会很感激。因此,到目前为止我找到的解决方案只是在我的应用程序中的每个href上手动设置感叹号,但是这让我烦恼,我不知道该怎么做。我使用yeoman生成器生成了我的应用程序,我的app.js看起来像这样
angular
.module('appNameApp', [
'ngAnimate',
'ngCookies',
'ngResource',
'ngRoute',
'ngSanitize',
'ngTouch'
])
.config(function ($routeProvider) {
$routeProvider
.when('/', {
templateUrl: 'views/main.html',
controller: 'MainCtrl',
controllerAs: 'main'
})
.when('/about', {
templateUrl: 'views/about.html',
controller: 'AboutCtrl',
controllerAs: 'about'
})
.when('/jaspo', {
templateUrl: 'views/about.html',
controller: 'jaspoCtrl',
controllerAs: 'vm'
})
.otherwise({
redirectTo: '/'
});
});
答案 0 :(得分:80)
修改这两行:
.config(function ($routeProvider) {
$routeProvider
是:
.config(function ($routeProvider,$locationProvider) {
$locationProvider.hashPrefix('');
$routeProvider
答案 1 :(得分:27)
您可能已将角度版本从1.5更新为1.6,因为在1.6上,角度团队决定将默认的$ location hash-prefix更改为'!'。就像@Skrew建议的那样,您可以将其更改为''与$locationProvider.hashPrefix('');
Here。
答案 2 :(得分:2)
您的函数缺少locationProvider,需要为locationProvider指定html5Mode。见https://docs.angularjs.org/api/ng/provider/$locationProvider。而不是:
.config(function ($routeProvider) {
$routeProvider
.when('/', {
尝试:
.config(function ($locationProvider, $routeProvider) {
$locationProvider.html5Mode({
enabled:true
});
$routeProvider
.when('/',{
默认情况下,您还需要在index.html文件中指定基本标记<base href="/">
。