AngularJS实现路由实例


Posted in Javascript onFebruary 12, 2017

1、首先我们要引进angular.js和angular-route.js文件

<script type="text/javascript" src=lib/angular.min.js></script><script type="text/javascript" src=lib/angular-route.js></script>

2、然后我们要在html中创建锚点和容器(ng-view)

<a href="#first" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 第一页 </a>
<a href="#second" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 第二页 </a>
<div ng-view></div>

3、在模块中注入ngRoute依赖

angular.module('myApp',['ngRoute'])

4、配置路由

config(['$routeProvider',function ($routeProvider) {
  $routeProvider.when('/first',{
    template : '<h1> first </h1>'
  })
  .when('/second',{
    template : '<h1> second </h1>'
  })
  .otherwise({
    redirectTo : '/first'
  })    
}])

效果展示:

AngularJS实现路由实例

完整代码:

<!DOCTYPE html>
<html ng-app="myApp">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src=lib/angular.min.js></script>
  <script type="text/javascript" src=lib/angular-route.js></script>
</head>
<body>
  <a href="#first" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 第一页 </a>
  <a href="#second" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" > 第二页 </a>
  <div ng-view></div>
  <script type="text/javascript">
    angular.module('myApp',['ngRoute'])
      .config(['$routeProvider',function ($routeProvider) {
        $routeProvider.when('/first',{
          template : '<h1> first </h1>'
        })
        .when('/second',{
          template : '<h1> second </h1>'
        })
        .otherwise({
          redirectTo : '/first'
        })
      }])
  </script>
</body>
</html>

接下来我们做一个模拟项目路由

1、首先我们看一下我们所需要的文件

AngularJS实现路由实例

所有文件展示

2、之后我们看一下效果图

AngularJS实现路由实例

有两个页面,first page跟second page,点击两个按钮,切换不同页面,展示不同样式

3、好了。我们看一下代码吧!

index.html

<!DOCTYPE html>
<html ng-app='myApp'>
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <script type="text/javascript" src="lib/angular.min.js" ></script>
  <script type="text/javascript" src="lib/angular-css.js" ></script>
  <script type="text/javascript" src="lib/angular-route.js" ></script>
</head>
<body>  
  <a href="#first" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >First Page</a>

  <a href="#second" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Second Page</a>
  <div ng-view></div> 

  <script type="text/javascript" src='app.js'></script>
  <script type="text/javascript" src='js/services.js'></script>
  <script type="text/javascript" src='js/controller.js'></script>
</body>
</html>

代码解释:

首先我们要引进三个文件

1)angular.min.js----angularJS脚本
2)angular-css.js----用来转化css的脚本
3)angular-route.js----路由脚本

然后我们需要两个锚点

<a href="#first" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >First Page</a>
<a href="#second" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" >Second Page</a>

最后我们需要一个路由导入的容器

<div ng-view></div>

之后我们将路由的配置、服务、控制器分别放在app.js、services.js、controller.js文件中,便于代码的管理、维护。

4、接下来我们看一下路由的部分

angular.module('myApp',['ngRoute','angularCSS'])
  .config(['$routeProvider',function ($routeProvider) {
    $routeProvider
    .when('/first',{
      templateUrl : './view/first.html',
      controller : 'FirstCtrl as firstCtrl'
    })
    .when('/second',{
      templateUrl : './view/second.html',
      controller : 'SecondCtrl as secondCtrl'
    })
    .otherwise({
      redirectTo : '/first'
    })
  }])

代码解释:

1)首先,第一行,在myApp模块中注入ngRoute跟angularCSS依赖。

2)然后配置路由(config):

AngularJS 模块的 config 函数用于配置路由规则。通过使用 configAPI,我们请求把$routeProvider注入到我们的配置函数并且使用$routeProvider.whenAPI来定义我们的路由规则。

$routeProvider 为我们提供了 when(path,object) & otherwise(object) 函数按顺序定义所有路由,函数包含两个参数:

第一个参数是 URL 或者 URL 正则规则。第二个参数是路由配置对象。

3)controller

function、string或数组类型,在当前模板上执行的controller函数,生成新的scope。

4)controllerAs

string类型,为controller指定别名。

5)redirectTo

重定向的地址

6)resolve

指定当前controller所依赖的其他模块。

路由设置对象总览:

AngularJS实现路由实例

5、下面我们看一下服务部分,service.js

angular.module('myApp')
  .factory('FirstService',[function () {
    var list = [
      { name : 'Rose',age : 10 },
      { name : 'Tom',age : 19 }
    ];
    return {
      getList : function () {
        return list;
      }
    }
  }])

注意:angular.module('myApp')不需要注入依赖

6、下面看一下控制器集成,controller.js

angular.module('myApp')
  .controller('FirstCtrl',['$css','FirstService',function ($css,$service) {
    var self = this;
    $css.add('css/first.css');
    self.list = function () {
      return $service.getList();
    }
  }])
  .controller('SecondCtrl',['$css','FirstService',function ($css,$service) {
    var self = this;
    $css.add('css/second.css');
    self.list = function () {
      return $service.getList();
    }
  }])

代码分析:

1)在控制器中注入服务依赖以及#css依赖

controller('FirstCtrl',['$css','FirstService',function ($css,$service)

2)添加css依赖路径

$css.add('css/first.css');

注意:angular.module('myApp')不需要注入依赖

7、好了。逻辑的部分已经完成了,下面展示一下我们的样式以及结构部分吧

first.html

<div class='first'>
  <h1> First Page </h1>
  <div ng-repeat="p in firstCtrl.list()"> 
    {{ p.name }} == {{ p.age }} 
  </div>
</div>

second.html

<div class='second'>
  <h1> Second Page </h1>
  <div ng-repeat="p in secondCtrl.list()"> 
    {{ p.name }} == {{ p.age }} 
  </div>
</div>

first.css

.first{
  background-color: yellow;
}
.first *{
  color: red;
}

second.css

.second{
  background-color: skyblue;
}
.second *{
  color: green;
}
Javascript 相关文章推荐
Jquery Autocomplete 结合asp.net使用要点
Oct 29 Javascript
将查询条件的input、select清空
Jan 14 Javascript
javascript实现添加附件功能的方法
Nov 18 Javascript
基于jQuery实现仿搜狐辩论投票动画代码(附源码下载)
Feb 18 Javascript
jQuery Ajax使用FormData对象上传文件的方法
Sep 07 Javascript
JavaScript中const、var和let区别浅析
Oct 11 Javascript
RequireJS 依赖关系的实例(推荐)
Jan 21 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
Feb 05 Javascript
vue项目中vue-i18n和element-ui国际化开发实现过程
Apr 25 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
Apr 02 Javascript
es6数组includes()用法实例分析
Apr 18 Javascript
HTML+VUE分页实现炫酷物联网大屏功能
May 27 Vue.js
jQuery文字轮播特效
Feb 12 #Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 #Javascript
jQuery、zepto、js常用小技巧
Feb 12 #Javascript
JS中如何实现Laravel的route函数详解
Feb 12 #Javascript
js输入框使用正则表达式校验输入内容的实例
Feb 12 #Javascript
浅谈js中同名函数和同名变量的执行问题
Feb 12 #Javascript
老生常谈jquery id选择器和class选择器的区别
Feb 12 #Javascript
You might like
PHP读取PDF内容配合Xpdf的使用
2012/11/24 PHP
PHP函数分享之curl方式取得数据、模拟登陆、POST数据
2014/06/04 PHP
PHP  实现等比压缩图片尺寸和大小实例代码
2016/10/08 PHP
PHP单态模式简单用法示例
2016/11/16 PHP
php 查找数组元素提高效率的方法详解
2017/05/05 PHP
PHP+Ajax实现的博客文章添加类别功能示例
2018/03/29 PHP
PHP实现支持CURL字符串证书传输的方法
2019/03/23 PHP
jQuery 性能优化指南(3)
2009/05/21 Javascript
一个简单的js树形菜单
2011/12/09 Javascript
js中复制行和删除行的操作实例
2013/06/25 Javascript
使用js的replace()方法查找字符示例代码
2013/10/28 Javascript
屏蔽IE弹出&quot;您查看的网页正在试图关闭窗口,是否关闭此窗口&quot;的方法
2013/12/31 Javascript
IE下双击checkbox反应延迟问题的解决方法
2014/03/27 Javascript
ExtJS4 表格的嵌套 rowExpander应用
2014/05/02 Javascript
详谈javascript中DOM的基本属性
2015/02/26 Javascript
babel的使用及安装配置教程
2018/02/22 Javascript
使用async await 封装 axios的方法
2018/07/09 Javascript
微信小程序日历效果
2018/12/29 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
vue基于Echarts的拖拽数据可视化功能实现
2020/12/04 Vue.js
Vue中computed和watch有哪些区别
2020/12/19 Vue.js
[01:13:18]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.23
2019/09/05 DOTA
Python正则表达式如何进行字符串替换实例
2016/12/28 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
CSS3实现超慢速移动动画效果非常流畅无卡顿
2014/06/15 HTML / CSS
CSS3与动画有关的属性transition、animation、transform对比(史上最全版)
2017/08/18 HTML / CSS
美国东北部户外服装和设备零售商:Eastern Mountain Sports
2016/10/05 全球购物
德国原装品牌香水、化妆品和手表网站:BRASTY.DE
2016/10/16 全球购物
法院干警四风问题自我剖析材料
2014/09/29 职场文书
学校运动会广播稿范文
2014/10/02 职场文书
信用卡工作证明范本
2015/06/19 职场文书
2015年暑假生活总结
2015/07/13 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书