AngularJS 避繁就简的路由
AngularJS 路由允许我们通过不同的 URL 访问不同的内容。
通过 AngularJS 可以实现多视图的单页Web应用(single page web application,SPA)。
通常我们的URL形式为 http://runoob.com/first/page,但在单页Web应用中 AngularJS 通过 # + 标记 实现,例如:
http://runoob.com/#/first
http://runoob.com/#/second
http://runoob.com/#/third
先看看$routeProvider 的配置对象属性方法:
路由设置对象解析:
$routeProvider.when(url(路由名称), { template: string(模板提示字符串), templateUrl: string(模板路径URL), controller: string, function 或 array(在当前模板创建控制器,生成新的 $scope 作用域), controllerAs: string(控制器别名), redirectTo: string, function(重定向地址), resolve: object<key, function>(当前路由所依赖的模块) });
实现路由的大致步骤:
第一步:导入ngRoute模块
<script type="text/javascript" src="js/angular-route.min.js"></script>
第二步:在应用模块中使用ngRoute
angular.module("routeApp", ["ngRoute"])
第三步:使用 ng-view 指令
<div ng-view class="well" ng-controller='defaultCtrl'></div>
第四步:配置 $routeProvider 路由规则
... .config(['$routeProvider', function ($routeProvider){ $routeProvider .when('/home', { templateUrl : 'home.tpl.html', controller : 'HomeCtrl', }) .when('/computer', { templateUrl : 'computer.html', }) .when('/phone', { templateUrl : 'phone.html', }) .when('/other', { templateUrl : 'other.tpl.html', controller : 'OtherCtrl', }) }]) ...
第五步:通过超链接使用路由
<ul class="nav nav-tabs"> <li><a href="#/home">首页</a></li> <li><a href="#/computer">电脑</a></li> <li><a href="#/phone">手机</a></li> <li><a href="#/other">其他</a></li> </ul>
完整案例:
1 route.html页面
<html> <head> <meta charset="utf-8"> <title>AngularJS 路由实例</title> <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css"> </head> <body ng-app='routeApp'> <ul class="nav nav-tabs"> <li><a href="#/home">首页</a></li> <li><a href="#/computer">电脑</a></li> <li><a href="#/phone">手机</a></li> <li><a href="#/other">其他</a></li> </ul> <div ng-view class="well" ng-controller='defaultCtrl'></div> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="js/bootstrap.min.js"></script> <script type="text/javascript" src="js/angular.min.js"></script> <script type="text/javascript" src="js/angular-route.min.js"></script> <script type="text/ng-template" id="home.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/ng-template" id="other.tpl.html"> <h1>{{data}}</h1> </script> <script type="text/javascript"> angular.module("routeApp", ["ngRoute"]) .config(['$routeProvider', function ($routeProvider){ $routeProvider .when('/home', { templateUrl : 'home.tpl.html', controller : 'HomeCtrl', }) .when('/computer', { templateUrl : 'computer.html', }) .when('/phone', { templateUrl : 'phone.html', }) .when('/other', { templateUrl : 'other.tpl.html', controller : 'OtherCtrl', }) }]) .controller('defaultCtrl', function ($scope) { $scope.computers = [ { id: 0, name: "宏基", category: "Test", price: 1.25 }, { id: 1, name: "联想", category: "Test", price: 2.45 }, { id: 2, name: "苹果", category: "Test", price: 4.25 } ]; $scope.phones = [ { id: 0, name: "三星", category: "Test", price: 1.25 }, { id: 1, name: "荣耀", category: "Test", price: 2.45 }, { id: 2, name: "魅族", category: "Test", price: 4.25 } ]; }) .controller("HomeCtrl", function ($scope, $route) { $scope.$route = $route; $scope.data = "Home Home"; }) .controller("OtherCtrl", function ($scope, $route) { $scope.$route = $route; $scope.data = "Other Other"; }) </script> </body> </html>
2.computer.html 页面
<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名称</th> <th>类别</th> <th class="text-right">价格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in computers"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">删除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">编辑</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>
3.phone.html 页面
<div class="panel-body"> <table class="table table-striped table-hover"> <thead> <tr> <th>名称</th> <th>类别</th> <th class="text-right">价格</th> <th>{{data}}</th> </tr> </thead> <tbody> <tr ng-repeat="item in phones"> <td>{{item.name}}</td> <td>{{item.category}}</td> <td class="text-right">{{item.price | currency}}</td> <td class="text-center"> <button class="btn btn-xs btn-primary" ng-click="deleteProduct(item)">删除</button> <a href="/edit/{{item.id}}" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct(item)">编辑</a> <button class="btn btn-xs btn-primary" ng-click="incrementPrice(item)">+</button> </td> </tr> </tbody> </table> <div> <button class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">添加</button> <a href="create" class="btn btn-xs btn-primary" ng-click="editOrCreateProduct()">Add</a> </div> </div>
单击“首页”
单击“电脑”
单击“手机”
单击“其他”
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
相关文章
- 系统的学习了一下angularjs,发现angularjs的有些思想根php的模块smarty很像,例如数据绑定,filter。如果对smarty比较熟悉的话,学习angularjs会比较容易一点,这篇文章给大家介绍angularjs filter用法详解,感兴趣的朋友一起学习吧...2015-12-29
- AngularJS 通过路由支持多视图应用, 可以根据路由动态加载所需的视图, 在 AngularJS 的文档中有详细的介绍, 网上也有不少教程, 就不用介绍了!随着视图的不断增加,js文件会越来越多,而 AngularJS 默认需要把全部的js都一次性...2015-10-21
- 这篇文章主要为大家详细介绍了AngularJS实现分页显示数据库信息效果的相关资料,感兴趣的小伙伴们可以参考一下...2016-07-06
- 本文主要介绍AngularJS 依赖注入的知识,这里整理了相关的基础知识,并附示例代码和实现效果图,有兴趣的小伙伴可以参考下...2016-08-24
- 这篇文章主要介绍了angularjs $http实现form表单提交示例,非常具有实用价值,需要的朋友可以参考下 ...2017-06-15
- 这篇文章主要介绍了AngularJS实现Model缓存的方式,分享了多种AngularJS实现Model缓存的方法,感兴趣的小伙伴们可以参考一下...2016-02-05
- 本文主要介绍AngularJS 视图,这里整理了相关知识,并附代码示例和实现效果图,有兴趣的小伙伴可以参考下...2016-08-27
- 这篇文章主要介绍了AngularJS自定义指令之复制指令实现方法,结合完整实例形式分析了AngularJS自定义指令实现复制功能的相关操作技巧,需要的朋友可以参考下...2017-05-22
- 这篇文章主要介绍了vue-router路由参数刷新消失的问题...2017-06-24
- 下面小编就为大家带来一篇浅谈AngularJs指令之scope属性详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-10-25
- angular是Google开发的一个单页面应用框架,是现在比较主流的单页面应用框架之一,下面通过本文给大家介绍AngularJs中route的使用方法和配置,感兴趣的朋友一起学习吧...2016-02-09
- 任何时候,如果我们想要为请求添加全局功能,例如身份认证、错误处理等,在请求发送给服务器之前或服务器返回时对其进行拦截,是比较好的实现手段...2016-01-05
AngularJS使用ngOption实现下拉列表的实例代码
这篇文章主要介绍了AngularJS使用ngOption实现下拉列表的实例代码的相关资料,需要的朋友可以参考下...2016-01-25Angularjs中如何使用filterFilter函数过滤
这篇文章主要介绍了Angularjs中如何使用filterFilter函数过滤的相关资料,需要的朋友可以参考下...2016-02-12- AngularJS 让人爱不释手的八种功能,想知道AngularJS哪八种功能让人喜欢就快点看下本文吧...2016-03-28
- 这篇文章主要为大家详细介绍了AngularJS内建服务$location及$location功能,感兴趣的小伙伴们可以参考一下...2016-07-06
- 本文主要介绍AngularJS表单的知识,这里整理了表单的基础知识和简单的示例代码,有需要的小伙伴可以参考下...2016-08-24
- 下面小编就为大家带来一篇Angularjs---项目搭建图文教程。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2016-07-25
- 这篇文章主要介绍了AngularJS中的指令实践指南(二)的相关资料,需要的朋友可以参考下...2016-03-22
- 这篇文章主要介绍了angularjs循环对象属性实现动态列的思路详解,本文给大家分享一个demo代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-11-02