angularjs路由配置$route以及案例展示
2017-07-27 10:45
393 查看
angularjs路由配置$route以及案例展示
AngularJS 路由允许我们通过不同的 URL 访问不同的内容。通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。
通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现
<li><a href="#/">首页</a></li> <li><a href="#/computers">电脑</a></li> <li><a href="#/printers">打印机</a></li> <li><a href="#/blabla">其他</a></li>
当我们点击以上的任意一个链接时,向服务端请的地址都是一样的 (http://runoob.com/)。 因为 # 号之后的内容在向服务端请求时会被浏览器忽略掉。 所以我们就需要在客户端实现 # 号后面内容的功能实现。 AngularJS 路由 就通过 # + 标记 帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。
<html> <head> <meta charset="utf-8"> <title>AngularJS 路由实例</title> </head> <body ng-app='routeApp'> <h2>AngularJS 路由应用</h2> <ul> <li><a href="#/player/list">用户列表页</a></li> <li><a href="#/player/view/{{player.id}}">用户信息页</a></li> <li><a href="#/player/add">增加用户</a></li> <li><a href="#/player/edit/{{player.id}}">编辑用户</a></li> <li><a href="#/blabla">其他</a></li> </ul> <div ng-view></div> <script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> <script src="http://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script> <script> angular.module('routeApp',['ngRoute']) .config(['$routeProvider', function($routeProvider){ $routeProvider .when("/player/list", { templateUrl: "tmpl/player/list.html", controller: playerListCtrl }).when("/player/view/:playerId", { templateUrl: "tmpl/player/view.html", controller: playerViewCtrl }).when("/player/add", { templateUrl: "tmpl/player/add.html", controller: playerAddCtrl }).when("/player/edit/:playerId", { templateUrl: "tmpl/player/edit.html", controller: playerEditCtrl }).otherwise({ redirectTo: "/player/list" }); }]); </script> </body> </html>
实例解析
1.载入了实现路由的 js 文件:angular-route.js。<script src="http://apps.bdimg.com/libs/angular.js/1.4.6/angular.min.js"></script> <script src="http://apps.bdimg.com/libs/angular-route/1.3.13/angular-route.js"></script>
2.包含了 ngRoute 模块作为主应用模块的依赖模块。
angular.module('routeApp',['ngRoute'])
3.使用 ngView 指令。该 div 内的 HTML 内容会根据路由的变化而变化。
<div ng-view></div>
4.配置 routeProvider,AngularJSrouteProvider 用来定义路由规则。
.config(['$routeProvider', function($routeProvider){ $routeProvider .when("/player/list", { templateUrl: "tmpl/player/list.html", controller: playerListCtrl }).when("/player/view/:playerId", { templateUrl: "tmpl/player/view.html", controller: playerViewCtrl }).when("/player/add", { templateUrl: "tmpl/player/add.html", controller: playerAddCtrl }).when("/player/edit/:playerId", { templateUrl: "tmpl/player/edit.html", controller: playerEditCtrl }).otherwise({ redirectTo: "/player/list" }); }]);
AngularJS 模块的 config 函数用于配置路由规则。通过使用 configAPI,我们请求把routeProvider注入到我们的配置函数并且使用routeProvider.whenAPI来定义我们的路由规则。
$routeProvider 为我们提供了 when(path,object) & otherwise(object) 函数按顺序定义所有路由,函数包含两个参数:
第一个参数是 URL 或者 URL 正则规则。
第二个参数是路由配置对象。
路由设置对象
AngularJS 路由也可以通过不同的模板来实现。$routeProvider.when 函数的第一个参数是 URL 或者 URL 正则规则,第二个参数为路由配置对象。
路由配置对象语法规则如下:
$routeProvider.when(url, { template: string, templateUrl: string, controller: string, function 或 array, controllerAs: string, redirectTo: string, function, resolve: object<key, function> });
参数说明:
template:如果我们只需要在 ng-view 中插入简单的 HTML 内容,则使用该参数:
.when(‘/computers’,{template:’这是电脑分类页面’})
templateUrl:
如果我们只需要在 ng-view 中插入 HTML 模板文件,则使用该参数:
$routeProvider.when('/computers', { templateUrl: 'views/computers.html', });
以上代码会从服务端获取 views/computers.html 文件内容插入到 ng-view 中。
controller:
function、string或数组类型,在当前模板上执行的controller函数,生成新的scope。
controllerAs:
string类型,为controller指定别名。
redirectTo:
重定向的地址。
resolve:
指定当前controller所依赖的其他模块。
相关文章推荐
- AngularJS 路由以及模块配置
- AngularJS 路由以及模块配置
- 深入了解前端路由的实现机制以及angularjs-route-ui的使用
- AngularJS路由以及模块配置
- angularJS中-$route路由-$http(ajax)的使用
- 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
- centos6.7 route命令使用以及 添加永久路由的方法
- spring aop xml方式的配置案例 以及 annotation方式的配置aop
- 网络的路由配置以及Centos7的网络组实现 推荐
- ZF2多级树形路由Route配置实例
- thinkphp路由配置route.php
- AngularJS 路由:ng-route 与 ui-router
- 老男孩教育每日一题:2017年3月8日-如何添加一条路由-route路由实战使用案例
- AngularJS 路由:ng-route 与 ui-router
- ZF2多级树形路由Route配置实例
- AngularJS 路由:ng-route 与 ui-router
- AngularJS学习(六) 路由控制 ng-route
- Java与本地sql server数据库的配置与连接以及使用案例
- 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~
- AngularJS路由使用案例