href无法跳转到angularjs中的指定页面

自己写了一个angularjs + ionic项目,在广告中有一个查看商品详情,复制商品详情链接之后,页面没有跳转到指定页面,而是跳转到ionic项目的首页。

测试过程:

1、在没有打包压缩js 和 html(缓存)之前,可以链接到指定页面,但是打包压缩之后,地址栏会迅速的切换为angularjs默认的首页路由地址。

2、打包压缩的工程,进入首页之后,又能够正常的路由。

部分代码如下,代码如图

1、没有压缩的代码

2、压缩之后

过程分析

第一次使用HTML模板,它被加载到模板缓存中,以便快速检索。你可以直接将模板标签加载到缓存中,或者通过$templateCache服务。

也就是说,第一次通过href链接进入ionic项目,没有第一次使用HTML,即实际上$templateCache还没有真正缓存数据,找不到数据,那么执行默认的路由,进入首页的html页面,(这是才是第一次使用HTML模板),当再次点击指定连接的时候,就执行正常了。

解决办法:

压缩的js文件去掉$templateCache缓存即可。


 下面是自己写了一个规避办法 

String.prototype.startWith=function(str){  
    if(str==null||str==""||this.length==0||str.length>this.length)  
      return false;  
    if(this.substr(0,str.length)==str)  
      return true;  
    else  
      return false;  
    return true;  
}
//解决直接访问angular深度链接不成功的问题
var historyBefortUrl = "";//链接进来的Url,可能为空
var targetJumptoUrl = "";//想跳转的页面
function firstDeepJumpto(){
	window.location.href = targetJumptoUrl;
}

//定义配置信息
app.config(function ($stateProvider, $ionicConfigProvider) {
    //禁用所有缓存
    $ionicConfigProvider.views.maxCache(0);
    
    //解决深度链接跳转不成功的问题
    console.log(window.location.href);
    console.log(document.referrer);
    historyBefortUrl  =  document.referrer;
    targetJumptoUrl = window.location.href;
	//链接进来的URL与当前angular app域名不一致 并且 不是angular app 首页的链接
    if(!historyBefortUrl.startWith('http://www.sqhzg.cn/index.php/Wap/Homemake/indexHomeAngular.html') && (targetJumptoUrl !="http://www.sqhzg.cn/index.php/Wap/Homemake/indexHomeAngular.html#/appliance/index" && targetJumptoUrl !="http://www.sqhzg.cn/index.php/Wap/Homemake/indexHomeAngular.html")){
    	setTimeout(firstDeepJumpto,200);
    }
});

  

猜你喜欢

转载自hbiao68.iteye.com/blog/2318895