当我使用$location.path(url)
重定向时,Angular会将#
替换为%23
:
var path = $location.path() + "/#" + categoryId;
$location.path(path);
如何确保Angular不会用%23
替换我的hastag?
答案 0 :(得分:3)
您所体验的是正常的。当您使用$ location.path()设置新路径时,您不希望使用#字符,因为您的URL中已有一个。如果您仍然这样做,就像在您的示例中一样,您的#(URL中的第二个)将自动转义,因为您在网址中只能有一个未转义的#。
长话短说,要么在您的分类之前绝对需要这个#,那么在检索路径时你需要使用decodeURIComponent
。或者更容易我建议您不要使用此字符并将代码替换为:
var path = $location.path() + "/" + categoryId;
$location.path(path);
答案 1 :(得分:0)
使用$location.path('#/')
作为root时发生了这种情况。这是因为如果我们附加到路径中的前面,则角度$location.path
会对#tag
进行编码。而不是$location.path('#/')
使用$location.path('')
解决了root的问题。
使用$location.path('/something')
,其中angular将附加#tag并导航到网址<base>/#/something