我在移动AngularJS网站上使用HTML5 pushstate。当有人点击桌面版时,他们会被重定向到移动网站。有时,URL具有桌面站点使用的哈希值。额外的#
导致了消化循环问题。
我想在UI路由器甚至有机会对其进行操作之前修改路由字符串。给出:
http://www2.health.com.au/product/basic/#?blah
我只希望UI路由器读取路径/product/basic/
。
我尝试将一条规则添加到路由提供程序(docs),检查'#?'
并拆分字符串 - 但这似乎没有效果:
$urlRouterProvider.rule(function ($injector, $location){
var path = $location.url();
debugger;
if(path[path.length - 1].indexOf('#?')){
var splitpath = path.split('#?');
$location.replace().path(splitpath[0]);
return splitpath[0];
}
});
路线最终会像这样:http://www2.health.com.au/product/basic/#%252525252525252525252525252525252525252525252525252525252525252525252.......
错误10 $digest() iterations reached
我的印象是规则拦截路由,如果可能的话更改它,然后通过固定路由为ui-router处理。任何人都可以放弃任何光明吗?
答案 0 :(得分:0)
我对这个解决方案并不是特别满意,但我最终还是做了一个手动引导程序,并且有一个FREAKIN SETTIMEOUT!没有它,angular.bootstrap()
比赛window.location = ...
并赢得令人难以置信的胜利。
angular.element(document).ready(function(){
var loc = window.location.href,
index = loc.indexOf('#?');
if(index > 0){
alert('needsfix');
window.location = loc.substring(0, index);
setTimeout(function() {
angular.bootstrap(document, ['health3App']);
}, 500);
} else {
angular.bootstrap(document, ['health3App']);
}
})