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 相关文章推荐
Javascript学习笔记2 函数
Jan 11 Javascript
IE下写xml文件的两种方式(fso/saveAs)
Aug 05 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
JS中的Replace方法使用经验分享
May 20 Javascript
基于jquery实现导航菜单高亮显示(两种方法)
Aug 23 Javascript
基于jQuery Tipso插件实现消息提示框特效
Mar 16 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
原生js实现addclass,removeclass,toggleclasss实例
Nov 24 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
Vue组件之极简的地址选择器的实现
May 31 Javascript
解决微信小程序scroll-view组件无横向滚动的问题
Feb 04 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
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之CodeIgniter学习笔记
2013/06/17 PHP
PHP中的socket_read和socket_recv区别详解
2015/02/09 PHP
激活 ActiveX 控件
2006/10/09 Javascript
Prototype源码浅析 Enumerable部分(二)
2012/01/18 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
javascript中Number对象的toString()方法分析
2014/12/20 Javascript
详解JavaScript的变量和数据类型
2015/11/27 Javascript
jQuery 更改checkbox的状态,无效的解决方法
2016/07/22 Javascript
Vue单文件组件基础模板小结
2017/08/10 Javascript
JS库之ParticlesJS使用简介
2017/09/12 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
vue项目上传Github预览的实现示例
2018/11/06 Javascript
layui自定义ajax左侧三级菜单
2019/07/26 Javascript
Vue程序化的事件监听器(实例方案详解)
2020/01/07 Javascript
js实现购物车商品数量加减
2020/09/21 Javascript
python正则表达式re模块详细介绍
2014/05/29 Python
在Python中使用dict和set方法的教程
2015/04/27 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
2017/08/30 Python
Python实现matplotlib显示中文的方法详解
2018/02/06 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
Python Multiprocessing多进程 使用tqdm显示进度条的实现
2019/08/13 Python
python标准库sys和OS的函数使用方法与实例详解
2020/02/12 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Python实现疫情通定时自动填写功能(附代码)
2020/05/27 Python
Anaconda使用IDLE的实现示例
2020/09/23 Python
python中字典增加和删除使用方法
2020/09/30 Python
奥地利度假券的专家:we-are.travel
2019/04/10 全球购物
Aquatalia官网:意大利著名鞋履品牌
2019/09/26 全球购物
JAVA和C++的区别
2013/10/06 面试题
医学生个人求职信范文
2013/09/24 职场文书
公务员的自我鉴定
2013/10/26 职场文书
团队队名口号大全
2014/06/06 职场文书
数学教育专业求职信
2014/07/22 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
八年级地理课件资料及考点知识分享
2019/08/30 职场文书