当hashPrefix设置为“!”时,AngularJs抛出错误,其中url以/#xxx结尾:未捕获的错误:[$ location:ihshprfx]

时间:2015-02-19 10:47:55

标签: angularjs

我们的一些合作伙伴包含指向我们网站的链接,例如https://www.lapetitetranche.fr/#b4sqF

我们的应用程序使用!作为哈希前缀,因此Angular认为出错了并引发错误,但它不是错误的URL。

Uncaught Error: [$location:ihshprfx] Invalid url "https://www.lapetitetranche.fr/#b4sqF", missing hash prefix "#!".

我只想要angular忽略此参数,只需加载与https://www.lapetitetranche.fr相同的页面即可。我怎么能这样做?

感谢

2 个答案:

答案 0 :(得分:0)

很遗憾,你无法完全按照自己的意愿行事。

唯一的解决方案是使用角度路由器的html5模式。 在这种情况下,您必须创建将重定向到主页的服务器路由。

否则,如果你不想使用HTML5模式,你可以使用这个小小的黑客来防止角度行为。

var hash = window.location.hash;
if(hash.indexOf('#/')  == 0) {
    window.location.hash = '';
}

编辑:(来自评论)

if(hash.indexOf('#!') < 0 && 
    hash.indexOf('#') == 0 && 
    hash.indexOf('?#') < 0 && 
    hash.indexOf('?') != 0 && 
    hash.indexOf('#state') < 0 ){

    window.location.hash = '#!'; 
}

答案 1 :(得分:0)

您可以使用要在其中使用哈希链接的target="_self"标记中的<a>来绕过角度路由过程。 Angular会将链接视为外部页面,但该页面仍将加载到同一浏览器选项卡中。