Angularjs routeProvider将*?*或%3F添加到带有可选参数的URL

时间:2014-10-10 16:47:34

标签: angularjs

我试图理解为什么当我在网址中有可选参数时,Angular会继续向网址添加?%3F



$routeProvider
.when('/:locale?/', {
  templateUrl: '/views/index.html',
  controller: 'myController',
  title: 'Title'
})
.otherwise({
  redirectTo: '/'
});
// html5mode
$locationProvider.html5Mode(true);
$locationProvider.hashPrefix('!');




网址最终会以http://myexampledomain.com/en-US%3F/

结尾

我不确定我应该提供哪些其他信息来帮助我们获得正确答案,但请告诉我。

1 个答案:

答案 0 :(得分:1)

$routeProviderrouting不适用于查询字符串,我认为angular认为您正在尝试使用它们而不是定义可选参数。

我认为你没有在你的路线中正确定义你的可选参数,我相信你需要这样做:

$routeProvider
  .when('/:locale?', {
    templateUrl: '/views/index.html',
    controller: 'myController',
    title: 'Title'
})
.otherwise({
  redirectTo: '/'
});   

请注意,我在您的路线后删除了/,现在我认为angular应该能够使用可选参数识别此路线。