AngularJS通过ng-route实现基本的路由功能实例详解


Posted in Javascript onDecember 13, 2016

本文实例讲述了AngularJS通过ng-route实现基本的路由功能。分享给大家供大家参考,具体如下:

为什么需要前端路由~

(1)AJAX不会留下History历史记录

(2)用户无法通过URL进入应用指定的页面(书签或者分享等)

(3)AJAX对于SEO是一个灾难

1.一般情况下,我们访问网页的时候,是通过url地址。
比如我们访问一个网页:https://www.baidu.com/index/fix.html

在AngularJS中通过“#”来进行不同页面的路由,比如:
https://www.baidu.com/#/first,这个请求在向网页端传输的时候,服务器会自动忽略#之后的内容,因此可以根据#+标记帮助我们区分不同的逻辑页面并将不同的页面绑定到对应的控制器上。

AngularJS通过ng-route实现基本的路由功能实例详解

这是一个简单的路由控制界面,根据链接中的#/first和#/second分别对应跳转到不同的页面。

2.通过angularjs中的路由模块,实现ng-route的步骤

(1)载入包含ng-route的JS文件

(2)包含了 ngRoute 模块作为主应用模块的依赖模块。

(3)使用原生指令ng-view

(4)我们在html中定义链接,可以实现一个单页应用,比如链接可以这样定义:

<body>
 <ul>
  <li><a href="#/">首页</a></li>
  <li><a href="#/first">第一页面</a></li>
  <li><a href="#/second">第二页面</a></li>
  <li><a href="#/third">第三页面</a></li>
</ul>
  <div ng-view></div>
</body>

在js中的定义路由代码为:

angular.module('myapp',['ngRoute'])
.config(['$routeProvider',function($routeProvider){
  $routeProvider.when('/',{template:'这是首页页面'})
         .when('/first',{template:'这是第一个页面'})
         .when('/second',{template:'这是第二个页面'})
         .when('/third',{template:'这是第三个页面'})
         .otherwise({redirectTo:'/'});
}]);

(6)我们来看效果,首次当未有链接切换时候,默认的跳转到首页,效果如下:

当依次点击链接时,会依次切换ng-view中的值,并且实现了ng-view内内容的替换~

I)初始效果

AngularJS通过ng-route实现基本的路由功能实例详解

II)切换后的效果

AngularJS通过ng-route实现基本的路由功能实例详解

我们发现改变的仅仅是#后的值,并没有页面的跳转和刷新

3.angularJS中的路由设置对象

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>
});

参数解释:

(1)template:

使用该概述,可以在template中写入HTML内容,典型的例子是:

when('/',{template:'这是首页页面'})

(2)templateUrl:
如果现在我们并不是要HTML内容,而是需要一个模板文件来进行整体替换,例子如下:

$routeProvider.when('/computers', {
  templateUrl: 'views/computers.html',
});

(3)controller:function、string或数组类型,在当前模板上执行的controller函数,生成新的scope。
也可以对应的是控制器的名称。

(4)redirectTo:重定向的地址

(5)resolve:当前控制器所依赖的其他模块~

希望本文所述对大家AngularJS程序设计有所帮助。

Javascript 相关文章推荐
用js实现预览待上传的本地图片
Mar 15 Javascript
$.ajax json数据传递方法
Nov 19 Javascript
JavaScript高级程序设计 阅读笔记(十七) js事件
Aug 14 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
Sep 22 Javascript
给angular加上动画效遇到的问题总结
Feb 17 Javascript
javascript鼠标滑过显示二级菜单特效
Nov 18 Javascript
浅谈jquery选择器 :first与:first-child的区别
Nov 20 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
详解async/await 异步应用的常用场景
May 13 Javascript
js仿京东放大镜效果
Aug 09 Javascript
jQuery Easyui datagrid连续发送两次请求问题
Dec 13 #Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 #Javascript
JS声明式函数与赋值式函数实例分析
Dec 13 #Javascript
jQuery内存泄露解决办法
Dec 13 #Javascript
Angular 常用指令实例总结整理
Dec 13 #Javascript
jQuery UI制作选项卡(tabs)
Dec 13 #Javascript
详解Bootstrap各式各样的按钮(推荐)
Dec 13 #Javascript
You might like
php中通过curl smtp发送邮件
2012/06/05 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
2012/12/06 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
php数组编码转换示例详解
2014/03/11 PHP
Yii框架实现的验证码、登录及退出功能示例
2017/05/20 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
用js统计用户下载网页所需时间的脚本
2008/10/15 Javascript
JavaScript 快捷键设置实现代码
2009/03/13 Javascript
基于jquery实现拆分姓名的方法(纯JS版)
2013/05/08 Javascript
Js实现滚动变色的文字效果
2014/06/16 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
老生常谈javascript的面向对象思想
2017/08/22 Javascript
angular 组件通信的几种实现方式
2018/07/13 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
浅谈小程序 setData学问多
2019/02/20 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
[07:54]DOTA2-DPC中国联赛 正赛 iG vs VG 选手采访
2021/03/11 DOTA
新手该如何学python怎么学好python?
2008/10/07 Python
python django 访问静态文件出现404或500错误
2017/01/20 Python
Python编程实现二分法和牛顿迭代法求平方根代码
2017/12/04 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
python 定时器,轮询定时器的实例
2019/02/20 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
css3模拟jq点击事件的实例代码
2017/07/06 HTML / CSS
css3实现波纹特效、H5实现动态波浪效果
2018/01/31 HTML / CSS
html5+css如何实现中间大两头小的轮播效果
2018/12/06 HTML / CSS
如何理解transaction事务的概念
2015/05/27 面试题
小学生班会演讲稿
2014/01/09 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
现实表现材料范文
2014/12/23 职场文书
永不妥协观后感
2015/06/10 职场文书
《春酒》教学反思
2016/02/22 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
详解vue身份认证管理和租户管理
2021/05/25 Vue.js