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 相关文章推荐
javascript实现动态增加删除表格行(兼容IE/FF)
Apr 02 Javascript
JS 面向对象之神奇的prototype
Feb 26 Javascript
jquery动态加载图片数据练习代码
Aug 04 Javascript
javascript实现原生ajax的几种方法介绍
Sep 21 Javascript
javascript获取url上某个参数的方法
Nov 08 Javascript
node.js中的http.response.addTrailers方法使用说明
Dec 14 Javascript
js实现点击向下展开的下拉菜单效果代码
Sep 01 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
AngularJS基础 ng-model 指令详解及示例代码
Aug 02 Javascript
使用Fullpage插件快速开发整屏翻页的页面
Sep 13 Javascript
JavaScript实现读取与输出XML文件数据的方法示例
Jun 05 Javascript
浅谈JavaScript窗体Window.ShowModalDialog使用
Jul 22 Javascript
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 图片文件上传实现代码
2010/12/29 PHP
PHP is_subclass_of函数的一个BUG和解决方法
2014/06/01 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
PHP实现带重试功能的curl连接示例
2016/07/28 PHP
JavaScript 获取事件对象的注意点
2009/07/29 Javascript
Javascript Throttle &amp; Debounce应用介绍
2013/03/19 Javascript
JS+css 图片自动缩放自适应大小
2013/08/08 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
js隐式全局变量造成的bug示例代码
2014/04/22 Javascript
jQuery实现瀑布流布局
2014/12/12 Javascript
JavaScript进阶练习及简单实例分析
2016/06/03 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
微信小程序scroll-view实现横向滚动和上拉加载示例
2017/03/06 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
vue better-scroll插件使用详解
2018/01/25 Javascript
vue踩坑记录之数组定义和赋值问题
2019/03/20 Javascript
微信小程序云开发之云函数详解
2019/05/16 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
JavaScript数组常用的增删改查与其他属性详解
2020/10/13 Javascript
[01:51]2014DOTA2西雅图邀请赛 MVP 外卡赛black场间采访
2014/07/09 DOTA
python访问类中docstring注释的实现方法
2015/05/04 Python
python中使用print输出中文的方法
2018/07/16 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
2018/10/23 Python
Python实现定时执行任务的三种方式简单示例
2019/03/30 Python
Python学习笔记之自定义函数用法详解
2019/06/08 Python
Python selenium抓取虎牙短视频代码实例
2020/03/02 Python
python解释器安装教程的方法步骤
2020/07/02 Python
Python使用socket模块实现简单tcp通信
2020/08/18 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
行政助理岗位职责
2013/11/10 职场文书
聚美优品陈欧广告词
2014/03/14 职场文书
机电一体化应届生求职信
2014/08/09 职场文书
详解RedisTemplate下Redis分布式锁引发的系列问题
2021/04/27 Redis
Golang连接并操作MySQL
2022/04/14 MySQL
MySql统计函数COUNT的具体使用详解
2022/08/14 MySQL