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 相关文章推荐
input 和 textarea 输入框最大文字限制的jquery插件
Oct 27 Javascript
JS操作Cookies的小例子
Oct 15 Javascript
基于jquery实现的可编辑下拉框实现代码
Aug 02 Javascript
完美兼容各大浏览器的jQuery插件实现图片切换特效
Dec 12 Javascript
jQuery ajax应用总结
Jun 02 Javascript
vue的props实现子组件随父组件一起变化
Oct 27 Javascript
Javascript之面向对象--封装
Dec 02 Javascript
微信小程序本地缓存数据增删改查实例详解
May 24 Javascript
详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
Oct 21 Javascript
JS实现根据指定值删除数组中的元素操作示例
Aug 02 Javascript
解决angularjs service中依赖注入$scope报错的问题
Oct 02 Javascript
JS数组中对象去重操作示例
Jun 04 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+DBM的同学录程序(5)
2006/10/09 PHP
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
求帮忙修改个php curl模拟post请求内容后并下载文件的解决思路
2015/09/20 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
关于Ext中form移除textfield方法:hide(),setVisible(false),remove()
2010/12/02 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
2014/05/26 Javascript
jquery序列化表单以及回调函数的使用示例
2014/07/02 Javascript
js实现文本框宽度自适应文本宽度的方法
2015/08/13 Javascript
简单模拟node.js中require的加载机制
2016/10/27 Javascript
基于openlayers4实现点的扩散效果
2020/08/17 Javascript
详解Vue CLI3 多页应用实践和源码设计
2018/08/30 Javascript
Python中urllib2模块的8个使用细节分享
2015/01/01 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
2018/04/24 Python
Python namedtuple命名元组实现过程解析
2020/01/08 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
使用tensorflow实现矩阵分解方式
2020/02/07 Python
如何使用python代码操作git代码
2020/02/29 Python
浅谈python出错时traceback的解读
2020/07/15 Python
浅谈python 类方法/静态方法
2020/09/18 Python
python如何利用Mitmproxy抓包
2020/10/10 Python
详解HTML5中的标签
2015/06/19 HTML / CSS
瑞贝卡·明可弗包包官网:Rebecca Minkoff
2016/07/21 全球购物
澳洲的服装老品牌:SABA
2018/02/06 全球购物
Order by的几种用法
2013/06/16 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
硅酸盐工业控制专业应届生求职信
2013/11/02 职场文书
水利公司纪检监察自我鉴定
2014/02/25 职场文书
新教师岗前培训方案
2014/06/05 职场文书
授权委托书
2015/01/28 职场文书
暂住证明怎么写
2015/06/19 职场文书
高三毕业感言
2015/07/30 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
中学语文教学反思
2016/02/16 职场文书