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

来源:互联网 发布:iphone4优化 越狱 编辑:程序博客网 时间:2024/06/07 14:24

 

自己写了一个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);    }});

  

 

  • 大小: 8.5 KB
  • 大小: 12.4 KB
  • 查看图片附件
0 0
原创粉丝点击