如何从angularjs ng-route中删除hash#

Apo*_*los 14 javascript angularjs angular-routing

我试图使用locationProvider从角度js中的url路由中删除主题标签,但它给了我错误.

app.js

var eclassApp = angular.module('eclassApp', 
    ['ngRoute', 'eclassControllers', ]
);

eclassApp.config(['$routeProvider','$locationProvider',
    function ($routeProvider, $locationProvider){
        $routeProvider.
            when('/',{
                templateUrl: '/html/student-list.html',
                controller: 'StudentsListCtrl',
            }).
            when('/students/:studentId',{
                templateUrl: '/html/student-details.html',
                controller: 'StudentDetailsCtrl',

            }).otherwise({
                redirectTo: '/students'
            });
            $locationProvider.htmlMode(true);
    }]
);
Run Code Online (Sandbox Code Playgroud)

错误:

 Uncaught Error: [$injector:modulerr] http://errors.angularjs.org/1.3.13/$injector/modulerr?p0=eclassApp&p1=TypeE…oogleapis.com%2Fajax%2Flibs%2Fangularjs%2F1.3.13%2Fangular.min.js%3A17%3A1)
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?

编辑:用这样的选项对象调用html5Mode函数

$locationProvider.html5Mode({
    enabled:true
})
Run Code Online (Sandbox Code Playgroud)

我得到以下错误(更改为角度已满,以获得更好的错误解释而不是缩小版本)

Error: [$location:nobase] $location in HTML5 mode requires a <base> tag to be present!
Run Code Online (Sandbox Code Playgroud)

http://errors.angularjs.org/1.3.13/$location/nobase

Rab*_*abi 44

你可以像这样使用$ locationProvider -

$locationProvider.html5Mode({
  enabled: true,
  requireBase: false
});
Run Code Online (Sandbox Code Playgroud)

或者,您可以在index.html中使用基本标记(我想这是您的目标网页)

<head>
  <base href="/">
</head>
Run Code Online (Sandbox Code Playgroud)

删除基本标记可能会在IE9等旧IE浏览器中造成一些副作用