哈希签到角度路由

时间:2016-04-15 05:15:57

标签: javascript angularjs angular-routing

我在角度路由中遇到#符号问题。 我有导航链接,没有前导斜杠标志,就像那样:

<li class="active"><a href="/"><i class="fa fa-home" aria-hidden="true"></i></a></li>
<li><a href="#services"> УСЛУГИ</a></li>

否则,scrollspy无效(如果我正在使用<a href="#/services">) 但现在这是以这种方式配置的Angular路由的问题:

config(["$routeProvider", function ($routeProvider) {
        $routeProvider
            .when('/', {
                templateUrl: '/templates/home.html',
                controller: 'smu72Controller'
            })
            .when('/objects', {
                templateUrl: '/templates/objects.html',
                controller: 'smu72Controller'
            })
            .when('/object/:Id', {
                templateUrl: '/templates/object.html',
                controller: 'smu72Controller'
            })
        .otherwise({
            redirectTo: "/"
        });

如何更改路由(或scrollspy)配置以便能够将这些导航链接用于两种用途 - scrollspy和angular routing?

1 个答案:

答案 0 :(得分:1)

您可以使用#模块

删除路由中的$locationProvider符号
config(["$routeProvider", "$locationProvider", function ($routeProvider, $locationProvider) {
    $routeProvider
        .when('/', {
            templateUrl: '/templates/home.html',
            controller: 'smu72Controller'
        })
        .when('/objects', {
            templateUrl: '/templates/objects.html',
            controller: 'smu72Controller'
        })
        .when('/object/:Id', {
            templateUrl: '/templates/object.html',
            controller: 'smu72Controller'
        })
        .otherwise({
            redirectTo: "/"
        });

        // use the HTML5 History API
        $locationProvider.html5Mode(true);
}]);