AngularJS路由添加任何特殊字符?

时间:2015-07-04 16:54:13

标签: javascript angularjs html5

问题:当我输入http://localhost:53379时,我被重定向到http://localhost:53379/#/。来自/#/?

angular
        .module('app', ['ngRoute', 'ngStorage'])
        .config(['$routeProvider', function ($routeProvider) {
            debugger;
            $routeProvider.when('/:module/:task/:id/:menu/:action', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task/:id/:menu', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task/:id', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/', { templateUrl: 'app/start.html' });
            $routeProvider.otherwise({ redirectTo: '/' });
        }
    ]);

2 个答案:

答案 0 :(得分:1)

默认情况下,AngularJS将使用主题标签路由URL。

例如:

http://domain.com/#/home
http://domain.com/#/about

通过在配置中将html5Mode设置为true,可以非常轻松地从URL中删除#标签:

$locationProvider.html5Mode(true);

所以在你的代码中它将是:

angular.module('app', ['ngRoute', 'ngStorage'])
       .config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {
            debugger;
            $routeProvider.when('/:module/:task/:id/:menu/:action', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task/:id/:menu', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task/:id', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module/:task', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/:module', { templateUrl: 'app/blank.html', controller: PagesCtrl });
            $routeProvider.when('/', { templateUrl: 'app/start.html' });
            $routeProvider.otherwise({ redirectTo: '/' });

            $locationProvider.html5Mode(true);
        }
    ]);

在此之后,如果您正在执行“单页应用”,则必须确保您的支持将所有请求重定向到您的主页

答案 1 :(得分:0)

除非您在配置中设置以下历史记录api pushstate,否则

#默认设置为以角度进行路由:

    $locationProvider.html5Mode(true);

默认情况下,基本上角度使用散列更改进行路由。