Ⅲ.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 ...
 
随机推荐
- Qt, QT/E, Qtopia 的区别
			
转自Qt, QT/E, Qtopia 的区别 Qt泛指Qt的所有桌面版本,比如Qt/X11,Qt Windows,Qt Mac等.由于Qt最早是在Linux中随着KDE流行开来的,因此通常很多人说的Q ...
 - Linux用户环境变量
			
Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境.在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的.本文主要 ...
 - Android sqlite 数据库在java代码中的增删改查
			
private void queryPerson(PersonSQLiteOpenHelper personSQLiteOpenHelper) { SQLiteDatabase sqLiteDatab ...
 - mysql 连接url中useUnicode=true&characterEncoding=UTF-8 的作用
			
添加的作用是:指定字符的编码.解码格式. 例如:mysql数据库用的是gbk编码,而项目数据库用的是utf-8编码.这时候如果添加了useUnicode=true&cha ...
 - 李洪强iOS开发Swift篇—07_函数
			
李洪强iOS开发Swift篇—07_函数 一.函数的定义 (1)函数的定义格式 1 func 函数名(形参列表) -> 返回值类型 { 2 // 函数体... 3 4 } (2)形参列表的格式 ...
 - VS2012中使用纯C实现COM的小问题
			
用VS2012新建C++工程都预定义了宏__cplusplus,所以引用到的都是C++的定义.但是要用C实现的话,一般都是也就不是C++的了.比如以下代码: #undef INTERFACE #def ...
 - 转载:浅谈Java多线程的同步问题【很好我就留下来,多分共享】
			
转载:http://www.cnblogs.com/phinecos/archive/2010/03/13/1684877.html#undefined 多线程的同步依靠的是对象锁机制,synchro ...
 - 【CF】7 Beta Round D. Palindrome Degree
			
manacher+dp.其实理解manacher就可以解了,大水题,dp就是dp[i]=dp[i>>1]+1如何满足k-palindrome条件. /* 7D */ #include &l ...
 - Action中取得request,session的四种方式
			
Action中取得request,session的四种方式 在Struts2中,从Action中取得request,session的对象进行应用是开发中的必需步骤,那么如何从Action中取得这些对象 ...
 - devi into python 笔记(二)元组 变量声明 和列表解析
			
元组tuple: 类似list,只是tuple是不可变的list.类似java的String都是不可改变的.注意:tuple没有方法(有待考证),不可以像list那样那个list.pop 或者list ...