Angularjs中UI Router的使用方法


Posted in Javascript onMay 14, 2016

学习使用angular中,ui-route是其中的一个难点,简单使用没什么问题,但涉及到多级嵌套,就感觉有茫然,查了很多资料,踩过很多坑,到目前为止也不能说对ui-route有全面了解;这里只是把填补的几个坑记录一下备忘:

1.abstract的使用:

$stateProvider
  .state('shop',{
    resolve:{
      "shoplist":function($http){
        return $http({
          url:"/bookApp/data/shoplist.php",
          method:"GET"
        })
      }
    },
    abstract: true,
    url:"/shop",
    templateUrl:"templates/shop/list.html",
    controller:"ShopListController"
})

使用abstract属性有什么用,官方说明:abstract: true 表明此状态不能被显性激活,只能被子状态隐性激活。不能显性激活即不能直接通过"/shop"访问此状态路由,那不就是一条死路吗?那要你何用。等等,我们再看看后面一句:能被子状态隐性激活,貌似还能活起来,怎么让他活起来?我们再看下面的代码:

.state('shop.main',{
    url:"/:id",
    abstract: true,
     templateUrl:"templates/shop/main2.html",
     controller:"ShopMainController"  
  })

状态:"shop.main"是shop的子状态,按理论shop.main可以激活shop,我们只需要这样去访问:/shop/1,这样我们可以激活shop状态,和"shop.main"

我们暂且不着急,我再再给加上abstract属性,玩点刺激的,我们再把激活点再往后一级看下面代码:

.state('shop.main.info',{
    url:"",
    templateUrl:"templates/shop/info.html",
    cache:'false',
    controller:"InfoController"
  })
  .state('shop.main.author',{
    url:"/author",
    template:"<div>authorauthorauthorauthorauthor</div>"
  })
  .state('shop.main.samebook',{
    url:"samebook",
    template:"<div>samebooksamebooksamebooksamebooksamebooksamebook</div>"
  })

我看状态"shop.main.info"这个状态 的url为""所以我们要激活这个状态只需要这样去访问"shop/1"所有可以做为"shop.main"的一个默认子状态。

此时模块的嵌套关系为:list.html嵌套main.html,main.html嵌套info.html。我们可以通过"shop/:id"的url激活这个三层嵌套。

2控制器中参数的使用:

这个没什么难点,在控制器中注入"$stateParams" url参数在这个对象里可以拿得到 :

shop.controller("ShopMainController",['$scope','$stateParams','$rootScope',function($scope,$stateParams,$rootScope){
  $scope.persons = [1,2,3,4,5,6];
  $scope.good = {
    id:$stateParams.id
  }
  cfpLoadingBar.start();

}]);

3.怎么防止模板缓存

在开发过程中,模板缓存严重影响我们调试,有时候代码修改了,模板却没有任何变化。很苦恼,其他我们只需要监听下stateChangeSuccess,然后再清除$templateCache就行,这里我们采用run方法添加监听:

bookApp.run(['$rootScope','$templateCache', function ($rootScope, $templateCache) { 

 var stateChangeSuccess = $rootScope.$on('$stateChangeSuccess', stateChangeSuccess); 

 function stateChangeSuccess($rootScope) { 
  $templateCache.removeAll();  
 } 
}]);

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
使用jquery菜单插件HoverTree仿京东无限级菜单
Dec 18 Javascript
深入分析原生JavaScript事件
Dec 29 Javascript
jQuery检测返回值的数据类型
Jul 13 Javascript
js实现简单排列组合的方法
Jan 27 Javascript
Jquery Easyui日历组件Calender使用详解(23)
Dec 18 Javascript
Node.js对MongoDB数据库实现模糊查询的方法
May 03 Javascript
关于微信小程序bug记录与解决方法
Aug 15 Javascript
详解vue服务端渲染浏览器端缓存(keep-alive)
Oct 12 Javascript
JS数组方法join()用法实例分析
Jan 18 Javascript
js实现微信聊天界面
Aug 09 Javascript
js实现幻灯片轮播图
Aug 14 Javascript
详解微信小程序轨迹回放实现及遇到的坑
Feb 02 Javascript
两种js监听滚轮事件的实现方法
May 13 #Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 #Javascript
实例讲解Jquery中隐藏hide、显示show、切换toggle的用法
May 13 #Javascript
AngularJS在IE8的不支持的解决方法
May 13 #Javascript
基于jquery插件实现拖拽删除图片功能
Aug 27 #Javascript
JavaScript String 对象常用方法详解
May 13 #Javascript
JavaScript原生对象常用方法总结(推荐)
May 13 #Javascript
You might like
为什么夜间收到的中波电台比白天多
2021/03/01 无线电
php在线打包程序源码
2008/07/27 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php查找指定目录下指定大小文件的方法
2014/11/28 PHP
浅谈mysql_query()函数的返回值问题
2016/09/05 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
如何在PHP环境中使用ProtoBuf数据格式
2020/06/19 PHP
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
利用js实现选项卡的特别效果的实例
2013/03/03 Javascript
javascript的变量、传值、传址、参数之间关系
2015/07/26 Javascript
jQuery实现淡入淡出二级下拉导航菜单的方法
2015/08/28 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
ashx文件获取$.ajax()方法发送的数据
2016/05/26 Javascript
Angular在模板驱动表单中自定义校验器的方法
2017/08/09 Javascript
Express的HTTP重定向到HTTPS的方法
2018/06/06 Javascript
基于Vue实现微前端的示例代码
2020/04/24 Javascript
Postman动态获取返回值过程详解
2020/06/30 Javascript
JS制作简易计算器的实例代码
2020/07/04 Javascript
gearman的安装启动及python API使用实例
2014/07/08 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
完美解决Python2操作中文名文件乱码的问题
2017/01/04 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
Python基于递归算法实现的汉诺塔与Fibonacci数列示例
2018/04/18 Python
python求解数组中两个字符串的最小距离
2018/09/27 Python
详解Python中is和==的区别
2019/03/21 Python
python爬虫实现POST request payload形式的请求
2020/04/30 Python
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
加利福尼亚州威尼斯的女性奢侈品设计师服装和概念店:Mona Moore
2018/09/13 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
高三毕业生自我鉴定
2013/12/20 职场文书
先进班级集体事迹材料
2014/01/30 职场文书
幼儿园教师个人反思
2014/01/30 职场文书
优秀本科生求职推荐信
2014/02/24 职场文书
总经理助理的职责
2014/03/14 职场文书
病人家属写给医院的感谢信
2015/01/23 职场文书
2016年小学中秋节活动总结
2016/04/05 职场文书