如何为AngularJS路由添加动态前缀

时间:2013-07-07 13:14:38

标签: javascript angularjs angularjs-routing

我是什么让本地化的网址如下:

假设我们总是了解用户信息。

angular.module('website', [])
.constant('ROUTES', (function () {
    var lang = 'eng'; // just for example
    return {
        SOME_PATH: '/' + lang  + '/somepath'
  }
})())
.config([..., '$locationProvider', 'ROUTES', function(..., $locationProvider, ROUTES {
    $routeProvider.when(ROUTES.SOME_PATH, {templateUrl: 'pages/some_page.html', controller:     'SomePageController'});
    $locationProvider.html5Mode(true);
}])
.run(['$rootScope', 'ROUTES', function ($rootScope, ROUTES) {
    $rootScope.ROUTES = ROUTES;
}]);

所以,如果我在html中添加链接,那就是工作:

<a href="{{ROUTES.SOME_PATH}}">Some path</a>

按照计划点击链接路由工作后。 但是,如果我刷新页面或直接链接(“http://example.com/eng/somepath”),我无法访问任何页面并看到404页面。

2 个答案:

答案 0 :(得分:2)

使用$ routeProvider映射路由会不会更容易?

$routeProvider.when('/:langId/:somepath', 
    {
     controller: 'languageHandlingController'
    })

答案 1 :(得分:0)

我认为最好的选择是将网址设置为http://mysite.com/somepath?lang=en,然后您可以直接从网址上阅读lang,只要您需要。