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 相关文章推荐
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
Oct 16 Javascript
javascript滚轮控制模拟滚动条
Oct 19 Javascript
Bootstrap树形菜单插件TreeView.js使用方法详解
Nov 01 Javascript
微信小程序form表单组件示例代码
Jul 15 Javascript
Vue Element 分组+多选+可搜索Select选择器实现示例
Jul 23 Javascript
React 源码中的依赖注入方法
Nov 07 Javascript
JS实现带阴历的日历功能详解
Jan 24 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
Mar 13 Javascript
vue router导航守卫(router.beforeEach())的使用详解
Apr 19 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
Sep 20 Javascript
Vue.js中provide/inject实现响应式数据更新的方法示例
Oct 16 Javascript
vue实现配置全局访问路径头(axios)
Nov 01 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/03 冲泡冲煮
zend framework中使用memcache的方法
2016/03/04 PHP
PHP依赖注入(DI)和控制反转(IoC)详解
2017/06/12 PHP
PHP mongodb操作类定义与用法示例【适合mongodb2.x和mongodb3.x】
2018/06/16 PHP
JAVASCRIPT下判断IE与FF的比较简单的方式
2008/10/17 Javascript
javascript 打印内容方法小结
2009/11/04 Javascript
jQuery提交多个表单的小例子
2013/06/30 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
JS控制伪元素的方法汇总
2016/04/06 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
jQuery实现单击按钮遮罩弹出对话框效果(2)
2017/02/20 Javascript
React教程之Props验证的具体用法(Props Validation)
2017/09/04 Javascript
微信小程序可滑动月日历组件使用详解
2019/10/21 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
2019/10/31 Javascript
Vue axios与Go Frame后端框架的Options请求跨域问题详解
2020/03/03 Javascript
解决python写的windows服务不能启动的问题
2014/04/15 Python
Python设计模式之代理模式实例
2014/04/26 Python
Python实现3行代码解简单的一元一次方程
2014/08/18 Python
Python性能优化的20条建议
2014/10/25 Python
解决Python传递中文参数的问题
2015/08/04 Python
python实发邮件实例详解
2019/11/11 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
Python reques接口测试框架实现代码
2020/07/28 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
2020/09/25 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
Html5页面二次分享的实现
2018/07/30 HTML / CSS
Keds加拿大官网:购买帆布运动鞋和皮鞋
2019/09/26 全球购物
建筑文秘专业个人求职信范文
2013/12/28 职场文书
舞蹈比赛获奖感言
2014/02/04 职场文书
职工运动会感言
2014/02/07 职场文书
感恩教师节演讲稿
2014/09/03 职场文书
2014年群众路线教育实践活动整改措施
2014/09/24 职场文书
大学生学生会工作总结2015
2015/05/26 职场文书
2019最新公司租房合同(例文)
2019/07/18 职场文书
postgresql无序uuid性能测试及对数据库的影响
2021/06/11 PostgreSQL
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB