详解AngularJS1.6版本中ui-router路由中/#!/的解决方法


Posted in Javascript onMay 22, 2017

AngularJS 路由 是通过 # + 标记 帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。因此在设置好路由规则后,为html页面的a标签设置href路由链接切换不同的视图。Angular1.6版本之前通常有href=“#...”或href=“#/...”这两种写法,结果这两种写法在Angular1.6中没有任何反应。

结果查看了下浏览器地址栏,默认视图链接竟然显示“#!/..”,是的,中间多加了个!号。

详解AngularJS1.6版本中ui-router路由中/#!/的解决方法

AngularJS升级到了1.6版本后,里面多了很多/#!/的改动。那么1.6究竟做了哪些改变呢?可以参考这个:https://github.com/angular/angular.js/commit/aa077e81129c740041438688dff2e8d20c3d7b52

解决方案一:

所以在html页面a标签上将href的属性值添加一个!号就可以了。

<p><a href="#!/addStudent" rel="external nofollow" rel="external nofollow" >添加学生</a></p> 
<p><a href="#!/viewStudents" rel="external nofollow" rel="external nofollow" >查看学生</a></p>

完整代码:

<html> 
  <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS 视图</title> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> 
  </head> 
  <body> 
    <h2>AngularJS 视图</h2> 
    <div ng-app="mainApp"> 
      <p><a href="#!/addStudent" rel="external nofollow" rel="external nofollow" >添加学生</a></p> 
      <p><a href="#!/viewStudents" rel="external nofollow" rel="external nofollow" >查看学生</a></p> 
      <div ng-view></div> 
      <script type="text/ng-template" id="addStudent.html"> 
        <h2>添加学生</h2> 
        {{message}} 
      </script> 
      <script type="text/ng-template" id="viewStudents.html"> 
        <h2>查看学生</h2> 
        {{message}} 
      </script> 
    </div> 
    <script> 
      var mainApp=angular.module("mainApp",['ngRoute']); 
      mainApp.config(["$routeProvider",function($routeProvider){ 
        $routeProvider.when('/addStudent',{ 
          templateUrl:'addStudent.html', 
          controller:'AddStudentController' 
        }).when('/viewStudents',{ 
          templateUrl:'viewStudents.html', 
          controller:'ViewStudentsController' 
        }).otherwise({ 
          redirectTo:'/addStudent' 
        }); 
      }]); 
      mainApp.controller("AddStudentController",function($scope){ 
        $scope.message="这个页面是用于显示学生信息的输入表单"; 
      }); 
      mainApp.controller("ViewStudentsController",function($scope){ 
        $scope.message="这个页面是用于显示所有学生信息"; 
      }); 
    </script> 
  </body> 
</html>

解决方案二:

如果想让路由依旧表现的与之前版本的一致可以这样做:

mainApp.config(["$locationProvider","$routeProvider",function($locationProvider,$routeProvider){ 
    $locationProvider.hashPrefix(''); 
}]);
<p><a href="#addStudent" rel="external nofollow" rel="external nofollow" >添加学生</a></p> 
<p><a href="#viewStudents" rel="external nofollow" rel="external nofollow" >查看学生</a></p>

完整代码:

<html> 
  <head> 
    <meta charset="utf-8" /> 
    <title>AngularJS 视图</title> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular.min.js"></script> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.6.1/angular-route.min.js"></script> 
  </head> 
  <body> 
    <h2>AngularJS 视图</h2> 
    <div ng-app="mainApp"> 
      <p><a href="#addStudent" rel="external nofollow" rel="external nofollow" >添加学生</a></p> 
      <p><a href="#viewStudents" rel="external nofollow" rel="external nofollow" >查看学生</a></p> 
      <div ng-view></div> 
      <script type="text/ng-template" id="addStudent.html"> 
        <h2>添加学生</h2> 
        {{message}} 
      </script> 
      <script type="text/ng-template" id="viewStudents.html"> 
        <h2>查看学生</h2> 
        {{message}} 
      </script> 
    </div> 
    <script> 
      var mainApp=angular.module("mainApp",['ngRoute']); 
      mainApp.config(["$locationProvider","$routeProvider",function($locationProvider,$routeProvider){ 
        $locationProvider.hashPrefix(''); 
        $routeProvider.when('/addStudent',{ 
          templateUrl:'addStudent.html', 
          controller:'AddStudentController' 
        }).when('/viewStudents',{ 
          templateUrl:'viewStudents.html', 
          controller:'ViewStudentsController' 
        }).otherwise({ 
          redirectTo:'/addStudent' 
        }); 
      }]); 
      mainApp.controller("AddStudentController",function($scope){ 
        $scope.message="这个页面是用于显示学生信息的输入表单"; 
      }); 
      mainApp.controller("ViewStudentsController",function($scope){ 
        $scope.message="这个页面是用于显示所有学生信息"; 
      }); 
    </script> 
  </body> 
</html>

这样浏览器访问时,就不会多出个!号了。

详解AngularJS1.6版本中ui-router路由中/#!/的解决方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js tab效果的实现代码
Dec 26 Javascript
select 控制网页内容隐藏于显示的实现代码
May 25 Javascript
jquery ajax return没有返回值的解决方法
Oct 20 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
jquery实现顶部向右伸缩的导航区域代码
Sep 02 Javascript
VUEJS实战之修复错误并且美化时间(2)
Jun 13 Javascript
有关文件上传 非ajax提交 得到后台数据问题
Oct 12 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
javascript中json对象json数组json字符串互转及取值方法
Apr 19 Javascript
微信小程序 图片宽高自适应详解
May 11 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 Javascript
vue3 自定义图片放大器效果的示例代码
Jul 23 Vue.js
JS实现上传图片实时预览功能
May 22 #Javascript
详解Angular 4.x NgIf 的用法
May 22 #Javascript
JS实现无缝循环marquee滚动效果
May 22 #Javascript
jQuery表单验证之密码确认
May 22 #jQuery
JavaScript实现QQ聊天消息展示和评论提交功能
May 22 #Javascript
单行 JS 实现移动端金钱格式的输入规则
May 22 #Javascript
JavaScript表单验证实现代码
May 22 #Javascript
You might like
《斗罗大陆》六翼天使武魂最强,为什么老千家不是上三宗?
2020/03/02 国漫
php横向重复区域显示二法
2008/09/25 PHP
php 目录与文件处理-郑阿奇(续)
2011/07/04 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
PHP静态调用非静态方法的应用分析
2013/05/02 PHP
PHP数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
2015/05/09 PHP
Zend Framework自定义Helper类相关注意事项总结
2016/03/14 PHP
JSON 学习之完全手册 图文
2007/05/29 Javascript
dwr spring的集成实现代码
2009/03/22 Javascript
用js实现层随着内容大小动态渐变改变 推荐
2009/12/19 Javascript
Jquery替换已存在于element上的event的方法
2010/03/09 Javascript
javascript基于HTML5 canvas制作画箭头组件
2014/06/25 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
js实现的全国省市二级联动下拉选择菜单完整实例
2015/08/17 Javascript
直接拿来用的页面跳转进度条JS实现
2016/01/06 Javascript
jqueryMobile使用示例分享
2016/01/12 Javascript
js实现点击展开隐藏效果(实例代码)
2018/09/28 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
Python单向链表和双向链表原理与用法实例详解
2018/08/31 Python
Python实现查找字符串数组最长公共前缀示例
2019/03/27 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
python卸载后再次安装遇到的问题解决
2019/07/10 Python
Python 寻找局部最高点的实现
2019/12/05 Python
python 下载m3u8视频的示例代码
2020/11/11 Python
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
WebSphere 应用服务器都支持哪些认证
2013/12/26 面试题
行政文秘岗位职责范本
2014/02/10 职场文书
公司年会策划方案
2014/05/17 职场文书
大学生求职信范文
2014/05/24 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
前台文员岗位职责
2015/02/04 职场文书
中秋节感想
2015/08/10 职场文书