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身份证验证超强脚本
Oct 26 Javascript
ASP.NET jQuery 实例10 动态修改hyperlink的URL值
Feb 03 Javascript
B/S模式项目中常用的javascript汇总
Dec 17 Javascript
JS烟花背景效果实现方法
Mar 03 Javascript
jquery实现清新实用的网页菜单效果
Aug 28 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
通过jquery实现页面的动画效果(实例代码)
Sep 18 Javascript
详解堆的javascript实现方法
Nov 29 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
JS在Array数组中按指定位置删除或添加元素对象方法示例
Nov 19 Javascript
vue 单页应用和多页应用的优劣
Oct 22 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 高级课程笔记 面向对象
2009/06/21 PHP
谨慎使用PHP的引用原因分析
2012/09/06 PHP
详解thinkphp实现excel数据的导入导出(附完整案例)
2016/12/29 PHP
php实现等比例压缩图片
2018/07/26 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
javascript 处理事件绑定的一些兼容写法
2009/12/24 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
js获得当前时区夏令时发生和终止的时间代码
2014/02/23 Javascript
SuperSlide2实现图片滚动特效
2014/06/20 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
jquery Easyui快速开发总结
2015/08/20 Javascript
一个php+js实时显示时间问题
2015/10/12 Javascript
浅谈js的ajax的异步和同步请求的问题
2016/10/07 Javascript
Bootstrap Table的使用总结
2016/10/08 Javascript
ES6中Proxy与Reflect实现重载(overload)的方法
2017/03/30 Javascript
JavaScript对JSON数据进行排序和搜索
2017/07/24 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
js JSON.stringify()基础详解
2019/06/19 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
js利用iframe实现选项卡效果
2020/08/09 Javascript
Ant Design moment对象和字符串之间的相互转化教程
2020/10/27 Javascript
node.js文件的复制、创建文件夹等相关操作
2021/02/05 Javascript
python使用socket进行简单网络连接的方法
2015/04/29 Python
python3.5仿微软计算器程序
2020/03/30 Python
通过Python 接口使用OpenCV的方法
2018/04/02 Python
儿童python练习实例
2018/05/27 Python
使用PyQt4 设置TextEdit背景的方法
2019/06/14 Python
keras在构建LSTM模型时对变长序列的处理操作
2020/06/29 Python
JOSEPH官网:英国奢侈时尚品牌
2018/01/31 全球购物
Foot Locker英国官网:美国知名运动产品零售商
2019/02/21 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
员工考核管理制度
2014/02/02 职场文书
元宵节主持词
2014/03/25 职场文书
投资协议书范本
2014/04/21 职场文书
执法作风整顿剖析材料
2014/10/11 职场文书
CSS3 制作的图片滚动效果
2021/04/14 HTML / CSS