在单页面应用程序中比如angular应用,我们需要根据url的变化(即:不同的请求),来分配不同的资源。根据请求的URL来决定执行哪个模块,这个过程叫路由,同时,我们需要设计路由规则。

下面给出一个简单的小demo:

html结构:

<body ng-app='rootApp'>
<ul>
<li><a href='#/'>主页</a></li>
<li><a href='#/floor1'>一楼</a></li>
<li><a href='#/floor2'>二楼</a></li>
</ul>
<!-- ng-view 渲染站位 -->
<div ng-view></div>
</body>
<!-- 引入angular包 -->
<script src='bower_components/angular/angular.js'></script>
<!-- 引入angular-route包 -->
<script src='bower_components/angular-route/angular-route.js'></script>
<!-- 下面是渲染模板 -->
<script id='tmpl' type='text/ng-template'>
<h1>{{placeholder}}</h1>
</script>

js结构:

  /* 此处定义模块,由于需要设定路由,所以要注入ngRoute */
var rootApp = angular.module('rootApp', ['ngRoute']);
/* 定义路由表(路由规则)*/
rootApp.config(['$routeProvider', function($routeProvider) {
/* $routeProvider 就相当于交通警察,根据when和otherwise指挥路由走向 */
$routeProvider
.when('/', {
// 当请求的“URL” / , 找当前定义控制器和视图
controller: 'DefaultController',
/* template: '<h1>{{hello}}</h1>' */
templateUrl: 'tmpl'
})
.when('/floor1/1', {
controller: 'Floor1',
templateUrl: 'tmpl'
})
/* 这里用:id这种形式来保存路由参数,以便后来用$routeParams可以取到 */
.when('/floor2/:id/:name/:age', {
controller: 'Floor2',
templateUrl: 'tmpl'
})
.otherwise({
/* 都不匹配,定向到根目录 */
redirectTo: '/'
});
}]); // 定义相关控制器
rootApp.controller('DefaultController', ['$scope', function($scope) {
$scope.placeholder= '当前为主页';
}]);
rootApp.controller('Floor1', ['$scope', function($scope) {
$scope.placeholder = '当前为1楼';
}]);
rootApp.controller('Floor2', ['$scope', '$routeParams', function($scope, $routeParams) {
/* $routeParams 用于解析请求参数 */
console.log($routeParams);
$scope.placeholder= '当前为2楼';
}]);

总结: 
angular中的路由需要使用它的ngRoute模块,具体使用方法如上所示,其中路由表的设计是通过模块配置$routeProvider的when和otherwise来处理不同的请求参数。 
其中ng-view用于占坑,when中的template或者是templateUrl用于渲染控制层定义的数据,去填这个坑,其中路由参数是根据:parmName 来指定,通过$routeParams来解析参数。

angular路由操作的更多相关文章

  1. angular 路由项目例子

    angular 路由是我在工作中体验非常便捷的一点, 这是详细的API ,查看API 可以了解很多东西, https://github.com/angular-ui/ui-router/wiki/Qu ...

  2. Angular路由的定义和使用

    一.什么是routing(路由) Almost all non-trivial, non-demo Single Page App (SPA) require multiple pages. A se ...

  3. angular路由(自带路由篇)

    一.angular路由是什么? 为了实现SPA多视图的切换的效果,其原理可简述为每个 URL 都有对应的视图和控制器.所以当我们给url后面拼上不同的参数就能通过路由实现不同视图的切换. 二.文件总览 ...

  4. Angular 路由守卫

    1. 路由 Angular路由: 可以控制页面跳转:可以在多视图间切换: 2. 路由守卫 Angular路由守卫: 在进入或离开某路由时,用于判断是否可以离开.进入某路由::: return true ...

  5. angularjs中使用锚点,angular路由导致锚点失效的两种解决方案

     壹 ❀ 引 公司新项目开发中,首页要做个楼层导航效果(如下图),要求能点击图标对应跳到楼层即可,因为不需要跳转过度动画,也要求最好别用JQ,想着原生js操作dom计算top的兼容性,想着用锚点实现算 ...

  6. angular路由——ui.route

    angular路由 使用案例 <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  7. angular路由详解:

    1.$routeProvider ngRoute模块中的服务 2.otherwise:设置用于路由改变时,与任何其他定义的路由无法匹配的时候执行的代码 3.when:为$route服务定义新的路由 例 ...

  8. angular 路由的引用

    使用angular路由 遇到的坑. 使用cmd 安装好node.js 安装成功 输入node  -v 能查看版本说明安装成功 搭建angular项目输入命令 npm install  -g  angu ...

  9. BackBone结合ASP.NET MVC实现页面路由操作

    1. 问题的背景 什么是页面路由操作,就是通过浏览器地址栏的标记来实现页面内部的一些操作,这些操作具有异步性和持久性.应用场景主要有页面操作过程中的添加收藏夹的操作.后退操作等过程中能完全恢复界面. ...

随机推荐

  1. java中的各种Queue

    java中的各种并发Queue可以归为以下的几种: ConcurrentLinkedQueue: 一个由链表结构组成的非阻塞队列 ArrayBlockingQueue :一个由数组结构组成的有界阻塞队 ...

  2. RandomAccess接口的使用

    RandomAccess在类Collections的shuffle()方法中的使用:(jdk源码如下) /** * Randomly permute the specified list using ...

  3. ehcache memcache redis 三大缓存男高音[转]

    原文链接:http://blog.csdn.net/jationxiaozi/article/details/8509732 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特 ...

  4. 2048小游戏代码解析 C语言版

    2048小游戏,也算是风靡一时的益智游戏.其背后实现的逻辑比较简单,代码量不算多,而且趣味性强,适合作为有语言基础的童鞋来加强编程训练.本篇分析2048小游戏的C语言实现代码. 前言 游戏截图:  游 ...

  5. 使用WinInet实现HTTP站点访问

    废话不多说了,直接上代码 HTTP的GET方式代码 void sendGetRequest(LPCTSTR lpszURL) { LPCTSTR lpszAgent = _T("Winine ...

  6. 基于Docker构建带有Rsync的Jenkins

    1.编辑Dockerfile文件 FROM jenkins USER root ADD sources.list /etc/apt/sources.list RUN apt-get update &a ...

  7. C控制语句:循环

    #include<stdio.h>int main(void){long num;long sum = 0L;int status; printf("Please enter a ...

  8. HDU 3001(状态压缩dp)

    状态压缩dp的第一题! 题意:Mr ACMer想要进行一次旅行,他决定访问n座城市.Mr ACMer 可以从任意城市出发,必须访问所有的城市至少一次,并且任何一个城市访问的次数不能超过2次.n座城市间 ...

  9. Linux 6.4 设置yum 为centOS源

    一. 删除Redhat 自带的yum // root 用户执行 rpm -aq|grep yum|xargs rpm -e --nodeps 二 .下载CentOS 的 yum 安装文件 wget h ...

  10. Mongodb基础与入门

    一:基本了解                1. 特点                        基于分布式文件存储的NoSql数据库.能为WEB应用提供可扩展的高性能数据存储解决方案.      ...