angular路由——ui.route
angular路由
###使用案例
```
test
```
`time.html`
```
金刚葫芦娃
```
路由控制器使用
- 注:不需要在html中定义控制器
var app = angular.module("myApp", ['ui.router']);
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
//默认路由,与下面定义的路由匹配
$urlRouterProvider.otherwise('/lol');
//路由定义规则
$stateProvider
.state('lol', {
url:'/lol',
templateUrl: 'time.html',
controller: ['$scope',function($scope){ //直接在内部写控制器
}]
})
.state('dota', {
url:'/dota',
template: '<h1>王者荣耀</h1>',
controller: 'ctrl' //引入外部控制器
})
app.controller("ctrl", ['$scope', function($scope){
}]);
$state服务
- 实现路由中转
- 判断用户是否登录,若未登录,则跳转到登录页面
app.controller("ctrl", ['$scope','$state', function($scope,$state){
$scope.go = function(url){ //这里的方法随便命名
$state.go(url); //$state的go方法实现跳转,这个方法必须是go方法
}
time.html
<button ng-click="go('dota')">跳转</button> <!-- 这里的方法随便命名,点击后跳转到指定路由,不要加‘/ ’-->
$stateParams
- 在dota路由处加上{id},显示数据id
- 模板处加上
ui-sref="dota({id:v.id}),实现 跳转到dota路由,并显示id
var app = angular.module("myApp", ['ui.router']);
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
//默认路由,与下面定义的路由匹配
$urlRouterProvider.otherwise('/lol');
//路由定义规则
$stateProvider
.state('lol', {
url:'/lol',
templateUrl: 'time.html',
controller: ['$scope',function($scope){ //直接在内部写控制器
}]
})
.state('dota', {
url:'/dota{id}', //要加上{id},才会显示id
template: '<h1>王者荣耀</h1>',
controller: 'ctrl' //引入外部控制器
})
app.controller("ctrl", ['$scope','$stateParams', function($scope,$stateParams){
$scope.data = [
{id:1,name:"刘恺威",title:"王鸥"},
{id:2,name:"飞刀又见飞刀",title:"李元芳"}
];
var id = $stateParams.id;
if(id){
for(var i=0;i<$scope.data.length;i++){
if(id==$scope.data[i].id){
$scope.name=$scope.data[i].name;
}
}
}
}]);
time.html
<ul ng-repeat="v in data">
<li><a href="" ui-sref="dota({id:v.id})">{{v.name}}</a></li> <!-- 跳转到dota路由,并显示id -->
</ul>
<p>{{name}}</p>
父子嵌套路由
- 将父级路由模板内加入
<div ui-view></div>,子级模板内容会在父级模板中显示,最后一起通过父级路由加载到首页的<div ui-view></div> - 写法一
lol.dota,父级下的路由 - 写法二
parent:lol,指定该路由的父级
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
</head>
<body ng-app="myApp">
<a href="" ui-sref="lol">首页</a> <!-- ui-serf的值对应state的第一个参数 -->
<a href="" ui-sref="lol.dota">游戏</a> <!-- ui-serf的值对应state的url参数 -->
<a href="" ui-sref="youku">视频</a>
<div ui-view></div> <!-- 首页的<div ui-view></div> -->
<script src="angular.min.js"></script>
<script src="jquery-3.1.1.min.js"></script>
<script src="http://cdn.bootcss.com/angular-ui-router/1.0.0-beta.3/angular-ui-router.min.js"></script>
<script>
var app = angular.module("myApp", ['ui.router']);
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
//默认路由,与下面定义的路由匹配
$urlRouterProvider.otherwise('/lol');
//路由定义规则
$stateProvider
.state('lol', {
url:'/lol',
templateUrl: 'time.html',
})
.state('lol.dota', { //父级下的路由写法
url:'/lol.dota',
template: '<h1>王者荣耀</h1>',
})
.state('youku', {
url:'/youku',
template: '<h1>黑海夺金</h1>',
parent:'lol' //指定该路由的父级
})
}])
</script>
</body>
</html>
time.html
<h1>金刚葫芦娃{{name}}</h1>
<div ui-view></div> <!-- 将父级路由模板内加入<div ui-view></div>,子级模板内容会在父级模板中显示 -->
ui.route视图概念——ui-view
- 本案例效果为T字型网页,点击左侧导航栏,改变右侧显示
- views里写
ui-view对应的视图 - 左侧模板,可以点击跳转到不同路由,从而改变右侧视图显示
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<style>
div[ui-view="left"]{background-color: #ccc; float:left;}
div[ui-view="right"]{}
</style>
</head>
<body ng-app="myApp">
<div ui-view="top"></div>
<div ui-view="left"></div>
<div ui-view="right"></div>
<script src="angular.min.js"></script>
<script src="jquery-3.1.1.min.js"></script>
<script src="http://cdn.bootcss.com/angular-ui-router/1.0.0-beta.3/angular-ui-router.min.js"></script>
<script>
var app = angular.module("myApp", ['ui.router']);
app.config(['$stateProvider','$urlRouterProvider',function($stateProvider,$urlRouterProvider){
//默认路由,与下面定义的路由匹配
$urlRouterProvider.otherwise('/my');
//路由定义规则
$stateProvider
.state('my', {
url:'/my',
views: { //显示ui-view中的视图
top:{templateUrl: 'time.html'},
left:{templateUrl: 'left.html'},
right:{templateUrl: 'right.html'}
}
})
.state('game', {
url:'/game',
views: {
top:{templateUrl: 'time.html'},
left:{templateUrl: 'left.html'},
right:{templateUrl: 'game.html'}
}
})
}])
</script>
</body>
</html>
time.html
<h1>童年</h1>
left.html
<div><a href="#/my">动画</a></div> <!-- 点击切换到不同的路由 -->
<div><a href="" ui-sref="game">游戏</a></div>
right.html
<h1>金刚葫芦娃</h1>
game.html
<h1>超级玛丽</h1>
angular路由——ui.route的更多相关文章
- angular路由配置以及使用
一.生成路由文件 按照惯例,有一个独立模块来配置相关路由,这个模块类的名字叫做AppRoutingModule,位于src/app下的app-routing.module.ts文件中. 使用CLI生成 ...
- angular路由详解:
1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...
- 阿里云 Angular 2 UI框架 NG-ZORRO介绍
说明: Angular2出来后,一直想找个基于Angular2的前端后台管理框架,但一直没有找到比较适合的.前段时间在Angular官网资源无意之间看到NG-ZORRO,NG-ZORRO由阿里计算平台 ...
- angular 路由项目例子
angular 路由是我在工作中体验非常便捷的一点, 这是详细的API ,查看API 可以了解很多东西, https://github.com/angular-ui/ui-router/wiki/Qu ...
- 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的兼容性,想着用锚点实现算 ...
- 用于实现tab页签切换页面的angular路由复用策略
使用场景 打开菜单页面的时候,出现对应页面的页签.切换页签,原来的页面信息状态保留,关闭页签则保留的信息删除.使用路由复用策略,保存路由快照.实现效果如图所示 实现过程 概述: 1.在app.modu ...
随机推荐
- java web学习总结(二十八) -------------------JSP中的JavaBean
一.什么是JavaBean JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法 ...
- When it comes to intrusion analysis and forensics
以下内容的出现可以追溯到一个发生在互联网的安全事件: Z公司遭受某种攻击,服务器上被植入了Linux DDOS木马,部分系统命令入ls遭替换,攻击者已经获得该服务器root权限: 影响更恶劣的是,连接 ...
- ArcGIS Engine开发之书签加载
ArcGIS中书签是保存特定视图范围的快捷方式.使用书签保存关注的视图范围,可在需要时快速定位.查看与浏览.书签功能主要用到IMapBookmarks.ISpatialBookmark和IAOIBoo ...
- TextField和TextView的限制输入长度
TextField的限制代理方法 只需要在这个代理方法里面code这样的代码就可以了 16 是长度可以自己设置 - (BOOL)textField:(UITextField *)textField s ...
- dyld 加载 Mach-O
➠更多技术干货请戳:听云博客 前言 最近看 ObjC的runtime 是怎么实现 +load 钩子函数的实现.进而引申分析了 dyld 处理 Mach-O 的这部分机制. 1.简单分析 Mach-O ...
- ListView之性能优化
listview加载的核心是其adapter,本文通过减少adapter中创建.处理view的次数来提高listview加载的性能,总共分四个层次: 0.最原始的加载 1.利用convertView ...
- SQL Server数据库性能优化技巧
查询速度慢的原因很多,常见如下几种: 1.没有索引或者没有用到索引: 2.I/O吞吐量小,形成了瓶颈效应: 3.内存不足: 4.网络速度慢: 5.查询出的数据量过大: 6.锁或者死锁: 7.返回了不必 ...
- 学习 shell脚本之前的基础知识
转载自:http://www.92csz.com/study/linux/12.htm 学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...
- freeswitch 使用mysql替换默认的sqlite
转自 80000hz.com freeswitch 使用mysql替换默认的sqlite No Reply , Posted in 默认分类 on January 14, 2014 目标使用mysql ...
- 优化IPOL网站中基于DCT(离散余弦变换)的图像去噪算法(附源代码)。
在您阅读本文前,先需要告诉你的是:即使是本文优化过的算法,DCT去噪的计算量依旧很大,请不要向这个算法提出实时运行的苛刻要求. 言归正传,在IPOL网站中有一篇基于DCT的图像去噪文章,具体的链接地址 ...