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 插件学习(五)
Aug 06 Javascript
AngularJS语法详解
Jan 23 Javascript
JS实现至少包含字母、大小写数字、字符的密码等级的两种方法
Feb 03 Javascript
基于Jquery代码实现手风琴菜单
Nov 19 Javascript
javascript给span标签赋值的方法
Nov 26 Javascript
js中字符串编码函数escape()、encodeURI()、encodeURIComponent()区别详解
Apr 01 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
json数据处理及数据绑定
Jan 25 Javascript
浅谈ES6新增的数组方法和对象
Aug 08 Javascript
EasyUI的TreeGrid的过滤功能的解决思路
Aug 08 Javascript
Vue组件通信实践记录(推荐)
Aug 15 Javascript
vue使用drag与drop实现拖拽的示例代码
Sep 07 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
php邮件发送,php发送邮件的类
2011/03/24 PHP
探讨:如何使用PHP实现计算两个日期间隔的年、月、周、日数
2013/06/13 PHP
php使用Session和文件统计在线人数
2015/07/04 PHP
PHP中的Session对象如何使用
2015/09/25 PHP
CentOS系统中PHP安装扩展的方式汇总
2017/04/09 PHP
PHP实现在对象之外访问其私有属性private及保护属性protected的方法
2017/11/20 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
js Dialog 实践分享
2012/10/22 Javascript
jquery ready(fn)事件使用介绍
2013/08/21 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
node.js中的fs.chmodSync方法使用说明
2014/12/18 Javascript
javascript实现状态栏文字首尾相接循环滚动的方法
2015/07/22 Javascript
javascript添加前置0(补零)的几种方法
2017/01/05 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
Bootstrap响应式表格详解
2017/05/23 Javascript
javascript观察者模式实现自动刷新效果
2017/09/05 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
JS中用EL表达式获取上下文参数值的方法
2018/03/28 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
新手快速入门微信小程序组件库 iView Weapp
2019/06/24 Javascript
微信小程序实现点赞业务
2021/02/10 Javascript
Python实现的下载网页源码功能示例
2017/06/13 Python
Python实现发送QQ邮件的封装
2017/07/14 Python
Python中pow()和math.pow()函数用法示例
2018/02/11 Python
Python3处理HTTP请求的实例
2018/05/10 Python
python:print格式化输出到文件的实例
2018/05/14 Python
解决pytorch报错:AssertionError: Invalid device id的问题
2020/01/10 Python
css3翻牌翻数字的示例代码
2020/02/07 HTML / CSS
亚马逊西班牙购物网站:amazon西班牙
2017/03/06 全球购物
地理科学专业毕业生求职信
2013/10/15 职场文书
商务日语专业自荐信
2014/04/17 职场文书
销售员试用期自我评价
2014/09/15 职场文书
2015年小学开学寄语
2015/02/27 职场文书
2016年优秀教师先进事迹材料
2016/02/26 职场文书
Linux系统下MySQL配置主从分离的步骤
2022/03/21 MySQL