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代码
Aug 13 Javascript
某人初学javascript的时候写的学习笔记
Dec 30 Javascript
让JavaScript和其它资源并发下载的方法
Oct 16 Javascript
详解AngularJS中自定义指令的使用
Jun 17 Javascript
jquery模拟实现鼠标指针停止运动事件
Jan 12 Javascript
JS图片放大效果简单实现代码
Sep 08 Javascript
js选项卡的制作方法
Jan 23 Javascript
对Vue.js之事件的绑定(v-on: 或者 @ )详解
Sep 15 Javascript
vue项目中使用fetch的实现方法
Apr 25 Javascript
webgl实现物体描边效果的方法介绍
Nov 27 Javascript
JavaScript 监听组合按键思路及代码实现
Jul 28 Javascript
微信小程序基于ColorUI构建皮皮虾短视频去水印组件
Nov 04 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桌面中心(二) 数据库写入
2007/03/11 PHP
VB中的RasEnumConnections函数返回632错误解决方法
2014/07/29 PHP
ThinkPHP模版中导入CSS和JS文件的方法
2014/11/29 PHP
简单实现php上传文件功能
2017/09/21 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
对 lightbox JS 图片控件进行了一下改造, 使其他支持复杂的图片说明
2010/03/20 Javascript
extjs实现选择多表自定义查询功能 前台部分(ext源码)
2011/12/20 Javascript
『jQuery』.html(),.text()和.val()的概述及使用
2013/04/22 Javascript
使用js对select动态添加和删除OPTION示例代码
2013/08/12 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
AngularJS中的按需加载ocLazyLoad示例
2017/01/11 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
2017/04/20 Javascript
基于vue实现swipe分页组件实例
2017/05/25 Javascript
jQuery动画_动力节点节点Java学院整理
2017/07/04 jQuery
webpack多页面开发实践
2017/12/18 Javascript
解决使用bootstrap的dropdown部件时报错:error:Bootstrap dropdown require Popper.js问题
2018/08/30 Javascript
angular的输入和输出的使用方法
2018/09/22 Javascript
Layer+Echarts构建弹出层折线图的方法
2019/09/25 Javascript
JavaScript语法约定和程序调试原理解析
2020/11/03 Javascript
Python跨文件全局变量的实现方法示例
2017/12/10 Python
python里 super类的工作原理详解
2019/06/19 Python
Python企业编码生成系统总体系统设计概述
2019/07/26 Python
python绘制封闭多边形教程
2020/02/18 Python
TensorFlow tf.nn.softmax_cross_entropy_with_logits的用法
2020/04/19 Python
Python模块zipfile原理及使用方法详解
2020/08/04 Python
网页切图的CSS和布局经验与要点
2015/04/09 HTML / CSS
基于html5 DeviceOrientation 实现微信摇一摇功能
2015/09/25 HTML / CSS
美国派对用品及装饰品网上商店:Shindigz
2016/07/30 全球购物
优良学风班总结材料
2014/02/08 职场文书
大学迎新晚会主持词
2014/03/24 职场文书
社区春季防火方案
2014/06/02 职场文书
美德少年事迹材料1000字
2014/08/21 职场文书
土地转让协议书
2014/09/27 职场文书
2016党员学习《反对自由主义》心得体会
2016/01/22 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技