使用ngroute时从AngularJS Url中删除#

时间:2015-04-17 12:17:27

标签: javascript angularjs

Angular新手在这里。我正在构建一个使用ngRoute模块将模板加载到索引页面的简单站点。到目前为止,一切进展顺利,我决定在加载每个模板时,我最好从Urls中删除丑陋的#。

我想从http://localhost/angularWebapp/#/home转到http://localhost/angularWebapp/home

这是我的链接:

<li><a href="/home">Home</a></li>
<li><a href="/about">About</a></li>

这是我的路线:

app.config(['$routeProvider', '$locationProvider',  function ($routeProvider, $locationProvider) {

        $locationProvider.html5Mode(true);
        $routeProvider
                .when("/home", {templateUrl: "partials/home.html", controller: "PageCtrl"})  //Home
                .when("/about", {templateUrl: "partials/about.html", controller: "PageCtrl"}) //About
                .otherwise("/404", {templateUrl: "partials/404.html", controller: "PageCtrl"}); //404
    }]);

但是当我加载页面时,我什么都没得到,而是在控制台中看到这个错误:

错误:[$ location:nobase] http://errors.angularjs.org/1.3.15/ $ location / nobase

我读了错误链接,它说我需要一个基本标签,但我将它添加到我的标题中,不幸的是它仍然显示错误:

<base href="AngularWebApp/">

但后来我收到了这个错误:

错误:[$ compile:ctreq] http://errors.angularjs.org/1.3.15/ $ compile / ctreq?p0 = ngInclude&amp; p1 = ngInclude

任何帮助都会很棒,谢谢。

1 个答案:

答案 0 :(得分:4)

<Base>是基本网址,与Angular无关。

<base href="http://www.example.com/page.html">

您还可以通过添加额外参数来关闭它。

$locationProvider.html5Mode({
    enabled: true,
    requireBase: false
});