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上传插件Uploadify使用详解及错误处理
Apr 27 Javascript
无阻塞加载脚本分析[全]
Jan 20 Javascript
JavaScript高级程序设计 阅读笔记(四) ECMAScript中的类型转换
Feb 27 Javascript
关于JS判断图片是否加载完成且获取图片宽度的方法
Apr 09 Javascript
jquery的ajax跨域请求原理和示例
May 08 Javascript
直接在JS里创建JSON数据然后遍历使用
Jul 25 Javascript
使用node.js半年来总结的 10 条经验
Aug 18 Javascript
vue cli使用绝对路径引用图片问题的解决
Dec 06 Javascript
解决vue页面刷新或者后退参数丢失的问题
Mar 13 Javascript
浅谈在不使用ssr的情况下解决Vue单页面SEO问题(2)
Nov 08 Javascript
webpack结合express实现自动刷新的方法
May 07 Javascript
MockJs结合json-server模拟后台数据
Aug 26 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 咖啡文化
在 PHP 中使用随机数的三个步骤
2006/10/09 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
jQuery随便控制任意div隐藏的方法
2013/06/28 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
JS实现的幻灯片切换显示效果
2016/09/07 Javascript
JavaScript实现垂直向上无缝滚动特效代码
2016/11/23 Javascript
原生js实现回复评论功能
2017/01/18 Javascript
微信小程序之MaterialDesign--input组件详解
2017/02/15 Javascript
Angular实现一个简单的多选复选框的弹出框指令实例
2017/04/25 Javascript
vue 如何添加全局函数或全局变量以及单页面的title设置总结
2017/06/01 Javascript
使用vue与jquery实时监听用户输入状态的操作代码
2017/09/19 jQuery
让网站自动生成章节目录索引的多个js代码
2018/01/07 Javascript
vue项目移动端实现ip输入框问题
2019/03/19 Javascript
微信小程序 button样式设置为图片的方法
2020/06/19 Javascript
Python自动生产表情包
2017/03/17 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
浅谈python数据类型及类型转换
2017/12/18 Python
python实现m3u8格式转换为mp4视频格式
2018/02/28 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
Django model select的多种用法详解
2019/07/16 Python
Django 迁移、操作数据库的方法
2019/08/02 Python
分享PyCharm的几个使用技巧
2019/11/10 Python
浅谈Tensorflow 动态双向RNN的输出问题
2020/01/20 Python
HTML5 Geolocation API的正确使用方法
2018/12/04 HTML / CSS
自然健康的概念:Natural Healthy Concepts
2020/01/26 全球购物
P D PAOLA法国官网:西班牙著名的珠宝首饰品牌
2020/02/15 全球购物
Static Nested Class 和 Inner Class的不同
2013/11/28 面试题
艺校音乐专业自我鉴定范文
2014/03/01 职场文书
房地产项目建议书
2014/03/12 职场文书
说明书范文
2014/05/07 职场文书
2015年底工作总结范文
2015/05/15 职场文书
干部外出学习心得体会
2016/01/18 职场文书
分享:关于学习的励志名言赏析
2019/08/16 职场文书