路由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指令,否则失效

  1. $locationProvider.html5Mode(true)是用来开启html5模式因为只有在html5的情况下
    才支持js改url地址,否则只能在后面加上#/test/a却不能改变地址
  2. templateUrl可以是url的地址,或者是$templateCache的key,或者是script标签的id,
    如果是方法返回的也是地址字符串
  3. controller可以是一个控制器名称或者一个方法
  4. controllerAs设置控制器的别名
  5. template可以是是模板字符串,或者一个方法返回模板字符串,方法的参数为$routeParams
  6. redirectTo这个参数是跳转到其他的路由
  7. resolve可以在进入控制器前对参数进行修改或者判断(当调用$q.reject时就不会进入控制器)
  8. caseInsensitiveMatch设置路由的是否大小写不敏感,默认为敏感
  9. reloadOnSearch 判断当前location.hashlocation.search改变是否重新更新路由,即地址栏上面是否有#test或者?a=test的改变,默认是重新更新路由
  10. 在控制器中可以或者$route$routeParams,其中$route.current.params$routeParams一样,$route还包含很多当前路由的信息
  11. otherwise是当没有匹配的路由时候成立

其中路由的地址的匹配有三种/:id,/:id**,/:id?规则?和也就是正则的规范


Ⅲ.AngularJS的点点滴滴-- 路由的更多相关文章

  1. Ⅳ.AngularJS的点点滴滴-- 服务

    服务(Angularjs很多方法都是服务组成的) 1.使用service方法创建的单例服务 <html> <script src="http://ajax.googleap ...

  2. Ⅱ.AngularJS的点点滴滴--缓存

    模板缓存-$templateCache and 缓存工厂 $cacheFactory 1.使用script标签 <html ng-app> <script src="htt ...

  3. Ⅶ.AngularJS的点点滴滴-- 事件

    事件(和js一样有冒泡和捕获) <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2 ...

  4. Ⅵ.AngularJS的点点滴滴-- 指令

    指令 基本用法 <html> <script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.2/angul ...

  5. AngularJS 的嵌套路由 UI-Router

    AngularJS 的嵌套路由 UI-Router 本篇文章翻译自:https://scotch.io/tutorials/angular-routing-using-ui-router 演示网站请查 ...

  6. AngularJS ui-router (嵌套路由)

    http://www.oschina.net/translate/angularjs-ui-router-nested-routes AngularJS ui-router (嵌套路由) 英文原文:A ...

  7. 关于AngularJs中的路由学习总结

    AngularJs中的路由,应用比较广泛,主要是允许我们通过不同的url访问不同的内容,可实现多视图的单页web应用.下面看看具体怎么使用. 关于路由  通常我们的URL形式为http://jtjds ...

  8. [Angularjs]视图和路由(四)

    写在前面 关于angularjs的路由的概念基本上这篇就要结束了,通过学习,以及在实际项目中的实践,还是比较容易上手的.自己也通过angularjs做了一个在app上的一个模块,效果还是可以的. 系列 ...

  9. [Angularjs]视图和路由(二)

    写在前面 上篇文章主要介绍了视图和路由的基本概念,并在文章最后举了一个简单的使用案例.这篇文章将继续学习路由的配置,及相关参数的说明. 系列文章 [Angularjs]ng-select和ng-opt ...

随机推荐

  1. 【技术贴】破解Myeclipse10.7

    程序用的是http://www.cr173.com/soft/58306.html这个破解程序,是英文版的中文版.使用起来非常爽,看下面 使用期间关掉Myeclipse 期间的第三步,点击激活,此时会 ...

  2. Standford CoreNLP--Sentiment Analysis初探

    Stanford CoreNLP功能之一是Sentiment Analysis(情感分析),可以标识出语句的正面或者负面情绪,包括:Positive,Neutral,Negative三个值. 运行有两 ...

  3. Python3整理文件

    晚上打算把播放器下载下来的音乐拷贝到mp3里边,但是它是如下形式存放的,相当头痛…… 作为程序员,想到使用python来遍历这个目录,并将有大于限制的音乐文件拷贝到指定目录,相关实现代码如下: # a ...

  4. oracle的sqlnet.ora , tnsnames.ora , Listener.ora 文件的作用(转)

    oracle网络配置三个配置文件 listener.ora.sqlnet.ora.tnsnames.ora ,都是放在$ORACLE_HOME/network/admin目录下.1. sqlnet.o ...

  5. Hibernate:组合模式解决树的映射

    树经常用来展示目录结构,那么在Hibernate中怎样解决树的映射问题呢? 先来看一个分销商的树形结构的例子 所有分销商 东北区 辽宁省 沈阳医药 吉林省 华北区 北京市 北京医药 河北省 华南区 那 ...

  6. Activity的启动过程

    详见: http://www.cloudchou.com/android/post-805.html

  7. Oracle SYS_CONTEXT Function

    Version 11.1   Actions As SYS Note: USERENV is an Oracle provided namespace that describes the curre ...

  8. 通过Microsoft Azure服务设计网络架构的经验分享

    作者 王枫  发布于 2014年4月8日 本文从产品设计和架构角度分享了Microsoft Azure网络服务方面的使用经验,希望你在阅读本文之后能够了解这些服务之间,从而更好地设计你的架构. Mic ...

  9. Bash字符串的处理

    # 定义几个变量用于测试目的 FILE_NAME="/usr/local/app/world.txt" TIME_NOW="`date +"%Y%m%d%H%M ...

  10. Leveraging the Power of Asynchrony in ASP.NET [转]

    Asynchronous programming has had a lot of attention in the last couple of years and there are two ke ...