Ⅲ.AngularJS的点点滴滴-- 路由
路由ngRoute (需要依赖ngRoute模块)
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angular-route.js"></script>
<div ng-view></div>
<script type="text/ng-template" id="scripttemplae">
scripttemplae value:{{value}}
</script>
<script>
angular.module('app.ui', []).run(["$templateCache",
function($templateCache) {
$templateCache.put("template/index.html",
'<div><input type="text" ng-model="id">\
<a href="/TEST/{{id}}.html">TEST/{{id}}.html</a>\
<a href="/test/{{id}}.xml">test/{{id}}.xml</a>\
<a href="/test/{{id}}.json?a=test">test/{{id}}.json?a=test</a>\
<a href="/test/{{id}}.css">test/{{id}}.css</a>\
</div>');
}]);
angular.module('app.route', ['ngRoute'])
.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.when('/test/:id.xml', {
templateUrl: 'scripttemplae',
controllerAs:'a',
controller: 'detail',
}).when('/test/:id.html', {
template: 'id:{{value}}',
controller: 'detail',
resolve: {
idfilter: function($q, $route) {
if ($route.current.params.id.length < 2) {
document.write('请输入长度大于2的字符串\
<a href="/a.html">返回</a>');
return $q.reject('sds');
}
$route.current.params.id+="add";
}
},
caseInsensitiveMatch: true,
reloadOnSearch: true
}).when('/test/:id.css', {
template: function(obj) {
return "id:" + obj.id;
},
controller: 'a',
}).when('/test/:id.json', {
redirectTo: function(obj, path, search) {
alert(search.a);
return '/test/' + obj.id + '.html';
}
}).otherwise({
templateUrl: 'template/index.html',
controller: function($scope) {
$scope.id = 2;
}
});
$locationProvider.html5Mode(true);
}]);
angular.module('app', ['app.route', 'app.ui'])
.controller('detail',
function($scope, $route, $routeParams) {
if ($routeParams.id == $route.current.params.id) {
$scope.value = $routeParams.id;
}
});
angular.bootstrap(document, ['app']);
</script>
</html>
上面基本上已经包含设置路由的全部写法,页面上面必须有个ng-view指令,否则失效
- $locationProvider.html5Mode(true)是用来开启html5模式因为只有在html5的情况下
才支持js改url地址,否则只能在后面加上#/test/a却不能改变地址- templateUrl可以是url的地址,或者是$templateCache的key,或者是script标签的id,
如果是方法返回的也是地址字符串- controller可以是一个控制器名称或者一个方法
- controllerAs设置控制器的别名
- template可以是是模板字符串,或者一个方法返回模板字符串,方法的参数为$routeParams
- redirectTo这个参数是跳转到其他的路由
- resolve可以在进入控制器前对参数进行修改或者判断(当调用$q.reject时就不会进入控制器)
- caseInsensitiveMatch设置路由的是否大小写不敏感,默认为敏感
- reloadOnSearch 判断当前location.hash和location.search改变是否重新更新路由,即地址栏上面是否有#test或者?a=test的改变,默认是重新更新路由
- 在控制器中可以或者$route和$routeParams,其中$route.current.params和$routeParams一样,$route还包含很多当前路由的信息
- otherwise是当没有匹配的路由时候成立
其中路由的地址的匹配有三种/:id,/:id**,/:id?规则?和也就是正则的规范
- 下一篇:Ⅳ.AngularJS的点点滴滴-- 服务
- 上一篇:Ⅱ.AngularJS的点点滴滴--缓存
- 本文链接地址:Ⅲ.AngularJS的点点滴滴-- 路由
Ⅲ.AngularJS的点点滴滴-- 路由的更多相关文章
- Ⅳ.AngularJS的点点滴滴-- 服务
服务(Angularjs很多方法都是服务组成的) 1.使用service方法创建的单例服务 <html> <script src="http://ajax.googleap ...
- Ⅱ.AngularJS的点点滴滴--缓存
模板缓存-$templateCache and 缓存工厂 $cacheFactory 1.使用script标签 <html ng-app> <script src="htt ...
- Ⅶ.AngularJS的点点滴滴-- 事件
事件(和js一样有冒泡和捕获) <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2 ...
- Ⅵ.AngularJS的点点滴滴-- 指令
指令 基本用法 <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angul ...
- AngularJS 的嵌套路由 UI-Router
AngularJS 的嵌套路由 UI-Router 本篇文章翻译自:https://scotch.io/tutorials/angular-routing-using-ui-router 演示网站请查 ...
- AngularJS ui-router (嵌套路由)
http://www.oschina.net/translate/angularjs-ui-router-nested-routes AngularJS ui-router (嵌套路由) 英文原文:A ...
- 关于AngularJs中的路由学习总结
AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由 通常我们的URL形式为http://jtjds ...
- [Angularjs]视图和路由(四)
写在前面 关于angularjs的路由的概念基本上这篇就要结束了,通过学习,以及在实际项目中的实践,还是比较容易上手的.自己也通过angularjs做了一个在app上的一个模块,效果还是可以的. 系列 ...
- [Angularjs]视图和路由(二)
写在前面 上篇文章主要介绍了视图和路由的基本概念,并在文章最后举了一个简单的使用案例.这篇文章将继续学习路由的配置,及相关参数的说明. 系列文章 [Angularjs]ng-select和ng-opt ...
随机推荐
- NetFlow网络流量监测技术的应用和设计(转载)
http://blog.chinaunix.net/uid-20466300-id-1672909.html http://www.cww.net.cn/news/html/2014/12/25/20 ...
- [mock]10月4日
第一次mock,CollabEdit开一个页面,开始做题.题目是,有方法pow(m,n),m和n都大于1,给出N,有顺序的打印出前N个pow(m,n)的结果.前一个是:4,8,9,16,... 然后在 ...
- CrystalDiskMark 的使用方法
CrystalDiskMark 是一个测试你的硬盘或者存储设备的小巧硬盘测试工具.简单易于操作的界面让你随时可以测试你的存储设备,测试存储设备大小和测试数字都可以选择,还可测试可读和可写的速度. 具体 ...
- 水平/竖直居中在旧版Safari上的bug
今天调了两个出现在旧版Safari上的layout bug. 它们最初是在同事的iPad上被发现的, 我在自己桌面上安装的Safari 5.1.7上也能够复现. Bug1: .vertical-cen ...
- nyist 740 “炫舞家“ST(动态规划)
dp[i][j][k]:表示第i次踩踏后两脚的位置j,k 先固定一只脚的位置j,第i次踩踏后,状态为dp[i][j][a[i]]或者dp[i][a[i]][j],其中a[i]表示第i个输入的元素,则有 ...
- Linux中修改环境变量及生效方法
在/etc/profile文件中添加变量[对所有用户生效(永久的)] 用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”. 要让刚才的修改马上生 ...
- 汉企C#面向对象——继承
public class Shengwu { private string _Name; public string Name { get { return _Name; } set { _Name ...
- Nginx 安装成 Windows 服务
Nginx 安装成Windows 服务方法,具体方法如下 1. 下载nginx windows版本 http://www.nginx.org 2. 下载微软的2个工具: instsrv.exe.srv ...
- MySQL 备份表和数据
方法1: Create table new_table_name (Select * from old_table_name); 方法2: 1.先备份表结构和数据#导出命令 -u用户名 -p密码 -h ...
- ASP.NET内部原理(HttpHandler和HttpModule)
[IT168 技术文档]在以前的ASP时候,当请求一个*.asp页面文件的时候,这个HTTP请求首先会被一个名为 inetinfo.exe进程所截获,这个进程实际上就是www服务.截获之后它会将这个请 ...