angular路由
ngRoute需要引进以下文件
<script src="http://code.angularjs.org/1.2.5/angular.min.js"></script>
<script src="http://code.angularjs.org/1.2.5/angular-route.min.js"></script>
ui.router需要引进以下文件
<script type="text/javascript" src="js/angular.js"></script>
<script type="text/javascript" src="js/angular-ui-router.js"></script> 为什么特意强调引进,因为自己就是因为没有分辨这两者的区别,白白浪费了一个早上,谨记谨记
ui-router的优势:多视图 嵌套视图
(1)多视图:页面可以显示多个动态变化的不同区块。
比如:页面一个区块用来显示页面状态,另一个区块用来显示页面主内容,当路由切换时,页面状态跟着变化,对应的页面主内容也跟着变化。
首先,我们尝试着用 ngRoute 来做:
html:
<div ng-view>区块1</div> <div ng-view>区块2</div>
js:
$routeProvider .when('/', { template: 'hello world' });
我们在html中利用ng-view指令定义了两个区块,于是两个div中显示了相同的内容,这很合乎情理,但却不是我们想要的,但是又不能为力,因为,在ngRoute中:视图没有名字进行唯一标志,所以它们被同等的处理。 路由配置只有一个模板,无法配置多个。
我们再用 ui.router 来做:
html
<div ui-view></div> <div ui-view="status"></div>
js
$stateProvider .state('home', { url: '/', views: { '': { template: 'hello world' }, 'status': { template: 'home page' } } });
这次,结果是我们想要的,两个区块,分别显示了不同的内容,原因在于,在ui.router中:可以给视图命名,如:ui-view="status"。 可以在路由配置中根据视图名字(如:status),配置不同的模板(其实还有controller等)。
注 :视图名是一个字符串,不可以包含 @ (原因后面会说)。
(2)嵌套视图:页面某个动态变化区块中,嵌套着另一个可以动态变化的区块。
比如:页面一个主区块显示主内容,主内容中的部分内容要求根据路由变化而变化,这时就需要另一个动态变化的区块嵌套在主区块中。
其实,嵌套视图,在html中的最终表现就像这样:
<div ng-view> I am parent <div ng-view>I am child</div> </div>
转成javascript,我们会在程序里这样写:
$routeProvider .when('/', { template: 'I am parent <div ng-view>I am child</div>' });
倘若,你真的用 ngRoute 这样写,你会发现浏览器崩溃了,因为在ng-view指令link的过程中,代码会无限递归下去。
那么造成这种现象的最根本原因: 路由没有明确的父子层级关系!
看看 ui.router 是如何解决这一问题的?
$stateProvider .state('parent', { abstract: true, url: '/', template: 'I am parent <div ui-view></div>' }) .state('parent.child', { url: '', template: 'I am child' });
巧妙地,通过 parent 与 parent.child 来确定路由的 父子关系 ,从而解决无限递归问题。 另外子路由的模板最终也将被插入到父路由模板的div[ui-view]中去,从而达到视图嵌套的效果。
ui.router工作原理路由,大致可以理解为:一个 查找匹配 的过程。
参考网址:http://www.codesec.net/view/170627.html(这里写的更加详细,自己主要是做了归纳整理)
angular路由的更多相关文章
- angular路由——ui.route
angular路由 使用案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- angular路由详解:
1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...
- angular 路由的引用
使用angular路由 遇到的坑. 使用cmd 安装好node.js 安装成功 输入node -v 能查看版本说明安装成功 搭建angular项目输入命令 npm install -g angu ...
- angular 路由项目例子
angular 路由是我在工作中体验非常便捷的一点, 这是详细的API ,查看API 可以了解很多东西, https://github.com/angular-ui/ui-router/wiki/Qu ...
- Angular路由参数传递
一.路由时传递参数的方式 1.在查询参数中传递数据 //页面 <a routerLink="/product" [queryParams]="{id:1}" ...
- angular路由(自带路由篇)
一.angular路由是什么? 为了实现SPA多视图的切换的效果,其原理可简述为每个 URL 都有对应的视图和控制器.所以当我们给url后面拼上不同的参数就能通过路由实现不同视图的切换. 二.文件总览 ...
- Angular路由守卫 canActivate
作用 canActivate 控制是否允许进入路由. canActivateChild 等同 canActivate,只不过针对是所有子路由. 关键代码 创建路由守卫 import { Injecta ...
- Angular路由守卫 canDeactivate
目的 离开页面时,做出逻辑判断 以ng-alain的项目为基础做演示 效果如图: 关键代码 定义一个CanDeactivateGuardService export class CanDeactiva ...
- Angular 路由守卫
1. 路由 Angular路由: 可以控制页面跳转:可以在多视图间切换: 2. 路由守卫 Angular路由守卫: 在进入或离开某路由时,用于判断是否可以离开.进入某路由::: return true ...
- angularjs中使用锚点,angular路由导致锚点失效的两种解决方案
壹 ❀ 引 公司新项目开发中,首页要做个楼层导航效果(如下图),要求能点击图标对应跳到楼层即可,因为不需要跳转过度动画,也要求最好别用JQ,想着原生js操作dom计算top的兼容性,想着用锚点实现算 ...
随机推荐
- Dynamics AX 2012 在BI分析中建立数据仓库的必要性
AX系统已有的BI分析架构 对于AX 的BI分析架构,相信大家都了解,可以看Reinhard之前的译文[译]Dynamics AX 2012 R2 BI系列-分析的架构 . AX 的BI分析架构的优势 ...
- Thinking in BigData 系列
Thinking in BigData(九)大数据hadoop集群下离线数据存储和挖掘架构 Thinking in BigData(八)大数据Hadoop核心架构HDFS+MapReduce+Hbas ...
- struts2实现改变超链接的显示方式
问题来源:我们看别人家专业的网站的时候,会发现他们的超链接都是这样的http://www.cnblogs.com/ivictor/p/5522383.html 这是一个连接到某一篇文章的超链接,我们一 ...
- thinkphp 查询当天 ,本周,本月,本季度,本年度,全部, 数据方法
数据库字段是createtime 里面保存的是时间戳 <?php /* *按今天,本周,本月,本季度,本年,全部查询预约单数据 * $day 代表查询条件 $cid 代表 公司id *返回arr ...
- 模块(configparser+shutil+logging)
一.configparser模块 1.模块介绍 configparser用于处理特定格式的文件,其本质上是利用open来操作文件. *注:(这里解释一下特定格式的文件) a.有section和opti ...
- [DL学习笔记]从人工神经网络到卷积神经网络_2_卷积神经网络
先一层一层的说卷积神经网络是啥: 1:卷积层,特征提取 我们输入这样一幅图片(28*28): 如果用传统神经网络,下一层的每个神经元将连接到输入图片的每一个像素上去,但是在卷积神经网络中,我们只把输入 ...
- Protobuf3 + Netty4: 在socket上传输多种类型的protobuf数据
Protobuf序列化的字节流数据是不能自描述的,当我们通过socket把数据发送到Client时,Client必须知道发送的是什么类型的数据,才能正确的反序列化它.这严重影响限制了C/S功能的实现, ...
- 【Spring】简单的Spring AOP注解示例
引入相关包: <properties> <spring.version>3.0.5.RELEASE</spring.version> <aspectj.ver ...
- nfs 配置
服务端1.打印系统版本cat /etc/redhat-release2.检查并安装NFS服务rpm -aq nfs-utils portmap rpcbindyum grouplistyum grou ...
- UVA 11464 偶数矩阵
https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...