url上的Angular可选命名组留下编码问号

时间:2014-09-25 22:06:27

标签: angularjs encoding angular-routing named-parameters

我有以下角度路线:

            $routeProvider.when('/sites/:var1/:var?/something/:year?/:month?/', {
                templateUrl: 'path-to-template.html,
                controller: 'PageController'
            });

             $locationProvider.html5Mode(true);

问题是,当我点击路线http://www.somesite.com/sites/category/something/2014/10/时,Angular会尝试匹配可选的命名组,最后将网址转换为 http://www.somesite.com/sites/category/%3F/something/2014%3F/10%3F/并将我重定向到那条道路。

有没有人知道为什么可选路径会替换为/?/(编码:%3F)?

非常感谢任何帮助。谢谢

修改

角度中的路由器会替换网址,使其与.when中提供的内容完全匹配,就/而言? (并且不确定还有什么)。所以,如果它找到匹配的路线。但是缺少/或?它只是附加它并刷新(角度刷新),然后显然url编码它。 (???:o)

1 个答案:

答案 0 :(得分:0)

我把它缩小到尾随斜线。使用:

'/sites/:var1/:var?/something/:year?/:month?/'

与:

http://www.somesite.com/sites/category/something/2014/10/

正确解析,从两者中删除斜杠也是如此。 实际上,将任何可选的命名组添加到url会导致路由依赖于斜杠。 至于为什么这种情况正在发生......