如何使用ui-router?

大家好,我是IT修真院武汉分院第10期学员余佳贝,一枚正直善良的web程序员。

今天给大家分享一下,修真院官网js任务6,深度思考中的知识点——如何使用ui-router?

一.背景介绍

我们都知道angular js经常用于开发客户端的单页面应用 所以要在一个页面呈现不同的视图,路由起到了至关重要的作用 angular.js 为我们封装好了一个路由工具 ngRoute ,它是一种靠url改变去切换视图. angularUI 也为我们封装了一个独立的路由模块 ui-router ,它是一种靠状态 state 来切换视图. 在学习ui-router之前可以先了解一下 angulajs中路由和原生路由ngroute相关的概念

二.知识剖析

2.1什么是路由

一般情况下,我们访问网页的时候,是通过url地址。比如我们通常访问一个网页:https://www.baidu.com/index/first.html 

但是在angular中是这样的 

https://www.baidu.com/index/index.html#/first https://www.baidu.com/index/index.html#/second

当我们点击以上任一一个链接时,向服务器请求的地址都是https://www.baidu.com/index/index.html ,而#号之后的内容在向服务器端请求时会被浏览器忽略掉, 所以我们在客户端实现#号后面的功能实现即可。简单来说,路由通过#+标记帮助我们区分不同逻辑页面,并将其绑定到对应的控制器上。

2.2通过angularjs中的路由模块,实现ng-route的步骤 

(1)载入包含ng-route的JS文件 (2)包含了 ngRoute 模块作为主应用模块的依赖模块 (3)使用指令ng-view (4)我们在html中定义链接,可以实现一个单页应用

var app=angular.module('app',['ngRoute']);

app.config(['$routeProvider',function($routeProvider) {

$routeProvider.

when('/login',{

templateUrl:'login.html'}).

when('/list',{

templateUrl:'list.html'}).

AngularJS 路由也可以通过不同的模板来实现。$routeProvider.when 函数的第一个参数是 URL 或者 URL 正则规则,第二个参数为路由配置对象。

路由配置对象语法规则如下:

$routeProvider.when(url, {template:string,//用于指定视图模板,也可以是一个方法 该方法必须返回html模板内容

templateUrl:string,//视图模板路径

controller:string,function或 array,//控制器名称或控制器构造方法

controllerAs:string,//通过控制器标识符名称引用控制器

resolve: object类型,//用于指定注入控制器中的内容});

ui-router是一个可以用来替换AngularJS原生路由的插件,它最大的特点就是支持嵌套路由

那么,什么是嵌套路由呢?

原生路由刚才也给大家说了 angular的视图是通过ng-view这个指令进行加载的 然后通过控制器来加载相应的视图模板 如果说我们有一个网页,左边是菜单栏,右边是各个菜单所对应的视图。 那么,如果按照这样的定义,点击每个菜单项,岂不得刷新整个网页? 而我们想要的只是右边的视图刷新。所以,这就要用到嵌套路由了。

三.常见问题

如何实现嵌套路由?

四.解决方案

ui-route子路由可以继承父路由,也就是说 state 设置可以嵌套,通过名称中的.(点)来区分层次.

五.编码实战

六.拓展思考

在 Angularjs 中 ui-sref 和 $state.go 如何传递参数?

1.ui-sref、$state.go 的区别

ui-sref一般使用在a链接中

$state.go一般使用在控制器中

这两者的本质上是一样的 ui-sref源码里面最后调用的还是$state.go的方法

2.如何传递参数

首先,要在目标页面定义接受的参数:

$stateProvider.state("page1",{

url:"/page2",

templateUrl:"page2.html",

controller:"p2",

params:{name:null}//在目标页面定义接收的参数

});

在目标页面的controller里注入$stateParams,然后$stateParams.参数名获取

app.controller("p2",function($scope,$state,$stateParams){

console.log($stateParams.name);//接收参数 

});

$state.go("page1.page2",{name:'rose'});//传参

<a ui-sref="page1.page3({name:'jack'})</a>

七.参考文献

学习ui-router

八.更多讨论

1.如何激活状态?

有三种方式来激活特定的状态

使用ui-sref绑定的连接

直接导航到与状态关联的url

使用$state.go()方法

2.多个页面可能使用相同的html模板,我们是要同样的代码写N遍吗?

(1)在html中给ui-view添加名字

(2)在路由配置中添加配置信息

3.我们经常会需要用到路由去传参,例如编辑一条信息,获取单个信息,应该如何去做呢?

angular-ui-router提供了一个$stateParams的service,可直接获取.在controller中的使用示例   有人肯定会疑问,$stateParams从何而来,在上面我们给angular.module中已经将其初始化,挂在到$rootScope.



PPT



undefined_腾讯视频
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容