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 相关文章推荐
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
js局部刷新页面时间具体实现
Jul 04 Javascript
关于在Servelet中如何获取当前时间的操作方法
Jun 28 Javascript
使用jQuery卸载全部事件的思路详解
Apr 03 jQuery
jQuery实现鼠标滑过预览图片大图效果的方法
Apr 26 jQuery
JavaScript对JSON数据进行排序和搜索
Jul 24 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
微信小程序支付PHP代码
Aug 23 Javascript
js限制输入框只能输入数字(onkeyup触发)
Sep 28 Javascript
JS实现数组删除指定元素功能示例
Jun 05 Javascript
vuex + keep-alive实现tab标签页面缓存功能
Oct 17 Javascript
json_decode 索引为数字时自动排序问题解决方法
Mar 28 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
使用PHPMyAdmin修复论坛数据库的图文方法
2012/01/09 PHP
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
Yii中实现处理前后台登录的新方法
2015/12/28 PHP
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
js统计页面的来访次数实现代码
2014/05/09 Javascript
采用自执行的匿名函数解决for循环使用闭包的问题
2014/09/11 Javascript
利用Node.js制作爬取大众点评的爬虫
2016/09/22 Javascript
vue.js初学入门教程(1)
2016/11/03 Javascript
基于BootStrap与jQuery.validate实现表单提交校验功能
2016/12/22 Javascript
jQuery插件HighCharts绘制2D带Label的折线图效果示例【附demo源码下载】
2017/03/08 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
详解vee-validate的使用个人小结
2017/06/07 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
学习Vue组件实例
2018/04/28 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
vue请求本地自己编写的json文件的方法
2019/04/25 Javascript
通过js实现压缩图片上传功能
2020/02/25 Javascript
绘制微信小程序验证码功能的实例代码
2021/01/05 Javascript
HTML中使用python屏蔽一些基本功能的方法
2017/07/07 Python
怎么使用pipenv管理你的python项目
2018/03/12 Python
浅谈Python的list中的选取范围
2018/11/12 Python
Python叠加两幅栅格图像的实现方法
2019/07/05 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
python绘制汉诺塔
2021/03/01 Python
商场消防演习方案
2014/02/12 职场文书
司机检讨书
2014/02/13 职场文书
小学评语大全
2014/04/22 职场文书
爱心捐款倡议书范文
2014/05/12 职场文书
领导班子三严三实心得体会
2014/10/13 职场文书
2014年高中班主任工作总结
2014/11/08 职场文书
公司放假通知怎么写
2015/04/15 职场文书
2015年乡镇组织委员工作总结
2015/10/23 职场文书
MySQL入门命令之函数-单行函数-流程控制函数
2021/04/05 MySQL
pytorch损失反向传播后梯度为none的问题
2021/05/12 Python
Node与Python 双向通信的实现代码
2021/07/16 Javascript
利用Python脚本写端口扫描器socket,python-nmap
2022/07/23 Python