详解angularjs 关于ui-router分层使用


Posted in Javascript onJune 12, 2017

最近感觉有很多学angular 的童鞋在路由问题中还不清楚怎么使用。其实我之前也是一直晕晕的不懂怎么用,现在要好得多了。在这里就记录下ui-router使用。

就已目前做的这个项目来介绍下怎么使用吧。Note:最好是按照层次规则来设置路由名,好处是容易看懂,也便于管理。

我这里是以总state到模块state再到下一层模块state(再到下一层模块state)最后到详细页面的state来分层。

首先我们先定义一个总的state如:

.state('home', {
      url: '/home?backKey',
//     abstract: true,
      templateUrl:'home/home.html',
      controller:'homeCtrl'
    })

在homeCtrl中可以为空,看需求吧。因为这个是最顶层的state所以在angular.module中一定要把下一层的路由angular.module依赖进来。如果有多个模块那就分别依赖进来,用逗号隔开,这里就依赖一个模块来说明下。如var m = angular.module("ms.homeRouter", ['ms.hrRouter']);

而在home.html中必须要存在一个<ui-view/> 作为祖模板。好了到这里就已经把最顶层的工作内容完成了,现在开始各个模块路由分配。

上面已经说到一个ms.hrRouter的模块依赖进来,现在就已这个为例来说明下配置:在这个模块中新建个js文件,定义一个angular.module,名字就是ms.hrRouter。

var m = angular.module("ms.hrRouter", [
  'ms.hrDismissionRouter']);

这个就是hr的模块,在这模块中又有该模块的子模块。angular.module名依赖进来,在这模块的路由中先配置下总路由,然后再在该路由下分下一层模块(或者子页面)路由。

.state('home.hr', {
        url: '/hr',
        template: '<ui-view />',
        controller: 'hrCtrl'
      })
      .state('home.hr.dismission', {
        url: '/dismission',
        template: '<ui-view />',
        controller: 'hrNextCtrl'
      })
      });

说明下上面的代码:state名为home.hr说明这个是在hr模块中的顶层路由。其template为'<ui-view />' 意思是抽象的,如果路由定位这里其显示内容其实是在home层页面中的ui-view中,这里的hrCtrl内容也可以为空,看需求,但必须要定义出这个控制器否则会报错(上面home的也是一样)。接着来解释下下面state名为home.hr.dismission路由:从名字就可以看出来这个路由就是hr模块的下一层模块,名为dismission。而url对象也是这模块的名字,以便在浏览器地址中可以直接看出是在哪模块哪层哪里。template、controller两个属性跟上面解释是一样的。

到现在已经完成了顶层路由home到hr模块路由再到dismission模块路由说明。

now到dismission模块中的详情页面的路由配置:在dismission模块中也新建一个路由js文件。这个模块的angular.module配置为var m = angular.module("ms.hrDismissionRouter", []);

因为这个是最底层的路由了已经再也没有子路由依赖了,所以后面的[]中是空的。在这页面中的state配置如:

.state('home.hr.dismission.commonApproval', {
      url: '/commonApproval?taskId&openid&doType',
      templateUrl: 'hr/dismissionAppl/dismissionAppl.html',
      resolve: {
        dismRsl: getResolve()
      },
      controller: 'dismissionApplCtrl'
    })
]);

从state名字也可以看出,这个是在dismission模块的子层。url也是这个页面的路由名,以及这个页面需要带的参数。这里的resolve的作用是在页面加载前先执行getResolve()方法。该方法的目的是获取数据,达到进该页面前先获取到该页面的数据,等到该页面的所有数据都获取完后再跳转到该页面。这个resolve属性不懂的可以百度,或者我博客中也有篇介绍的,可以看看。

好了!可能说得不是太明白但总体思路就是这样。

Note: 最好是在每层模块中都新建两个js文件,一个是router.js一个是controller.js这样好管理。详解angularjs 关于ui-router分层使用 这是模块分层对应的文件分层。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Extjs中ComboBoxTree实现的下拉框树效果(自写)
May 28 Javascript
jquery ztree实现下拉树形框使用到了json数据
May 14 Javascript
JS 弹出层 定位至屏幕居中示例
May 21 Javascript
JavaScript基本的输出和嵌入式写法教程
Oct 20 Javascript
jquery显示隐藏元素的实现代码
May 19 Javascript
用jquery快速解决IE输入框不能输入的问题
Oct 04 Javascript
Javascript中return的使用与闭包详解
Jan 11 Javascript
webpack分离css单独打包的方法
Jun 12 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
JS中判断字符串存在和非空的方法
Sep 12 Javascript
vue 父组件给子组件传值子组件给父组件传值的实例代码
Apr 15 Javascript
JS严格模式原理与用法实例分析
Apr 27 Javascript
Vue 2中ref属性的使用方法及注意事项
Jun 12 #Javascript
深究AngularJS如何获取input的焦点(自定义指令)
Jun 12 #Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 #jQuery
AngularJS自定义指令详解(有分页插件代码)
Jun 12 #Javascript
前端构建工具之gulp的语法教程
Jun 12 #Javascript
前端构建工具之gulp的配置与搭建详解
Jun 12 #Javascript
微信小程序 自定义Toast实例代码
Jun 12 #Javascript
You might like
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php基础知识:类与对象(5) static
2006/12/13 PHP
在同一窗体中使用PHP来处理多个提交任务
2008/05/08 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
php实现简单的上传进度条
2015/11/17 PHP
Laravel5中Cookie的使用详解
2017/05/03 PHP
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
js算法中的排序、数组去重详细概述
2013/10/14 Javascript
借助javascript代码判断网页是静态还是伪静态
2014/05/05 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
JQuery实现鼠标滚轮滑动到页面节点
2015/07/28 Javascript
bootstrap表单按回车会自动刷新页面的解决办法
2017/03/08 Javascript
vue使用ajax获取后台数据进行显示的示例
2018/08/09 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
微信小程序BindTap快速连续点击目标页面跳转多次问题处理
2019/04/08 Javascript
使用Vue CLI创建typescript项目的方法
2019/08/09 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
[50:38]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第二场 3月7日
2021/03/11 DOTA
python回调函数的使用方法
2014/01/23 Python
python通过smpt发送邮件的方法
2015/04/30 Python
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python3中的真除和Floor除法用法分析
2016/03/16 Python
Python使用cx_Oracle调用Oracle存储过程的方法示例
2017/10/07 Python
python如何使用unittest测试接口
2018/04/04 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
mac下pycharm设置python版本的图文教程
2018/06/13 Python
python 划分数据集为训练集和测试集的方法
2018/12/11 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
关于Python作用域自学总结
2019/06/10 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
class类在python中获取金融数据的实例方法
2020/12/10 Python
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类
2012/02/06 面试题
教师网络培训心得体会
2016/01/09 职场文书
解析CSS 提取图片主题色功能(小技巧)
2021/05/12 HTML / CSS