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判断iphone/android手机横竖屏模式的函数
Dec 20 Javascript
jquery获得页面元素的坐标值实现思路及代码
Apr 15 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
JQuery插入DOM节点的方法
Jun 11 Javascript
探究Vue.js 2.0新增的虚拟DOM
Oct 20 Javascript
移动端web滚动分页的实现方法
May 05 Javascript
vue.js选中动态绑定的radio的指定项
Jun 02 Javascript
vue2实现数据请求显示loading图
Nov 28 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
jQuery zTree树插件的使用教程
Aug 16 jQuery
浅谈bootstrap layer.open中end的使用方法
Sep 12 Javascript
JS实现滑动插件
Jan 15 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
2019十大人气国漫
2020/03/13 国漫
Drupal7中常用的数据库操作实例
2014/03/02 PHP
在Laravel5.6中使用Swoole的协程数据库查询
2018/06/15 PHP
基于JQuery的动态删除Table表格的行和列的代码
2011/05/12 Javascript
dojo学习第一天 Tab选项卡 实现
2011/08/28 Javascript
鼠标移动到图片名上,显示图片的简单实例
2013/07/14 Javascript
javascript数组遍历for与for in区别详解
2014/12/04 Javascript
JavaScript setTimeout使用闭包功能实现定时打印数值
2015/12/18 Javascript
【经验总结】编写JavaScript代码时应遵循的14条规律
2016/06/20 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
vue 虚拟dom的patch源码分析
2018/03/01 Javascript
vue项目中使用Hbuilder打包app 设置沉浸式状态栏的方法
2018/10/22 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
2018/11/28 Javascript
fetch 如何实现请求数据
2018/12/20 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
2019/11/01 jQuery
BootstrapValidator验证用户名已存在(ajax)
2019/11/08 Javascript
在Python中使用sort()方法进行排序的简单教程
2015/05/21 Python
python实现读取命令行参数的方法
2015/05/22 Python
python操作mysql代码总结
2018/06/01 Python
使用matplotlib中scatter方法画散点图
2019/03/19 Python
python实现从本地摄像头和网络摄像头截取图片功能
2019/07/11 Python
Python实现手机号自动判断男女性别(实例解析)
2019/12/22 Python
python3中sys.argv的实例用法
2020/04/24 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
python 获取剪切板内容的两种方法
2020/11/28 Python
英国Amara家居法国网站:家居装饰,现代装饰和豪华礼品
2016/12/15 全球购物
Hotels.com香港酒店网:你的自由行酒店订房专家
2018/01/22 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
木工主管岗位职责
2013/12/08 职场文书
心得体会开头
2014/01/01 职场文书
综治工作心得体会
2014/09/11 职场文书
《青山不老》教学反思
2016/02/22 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL