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 框架小结 个人工作经验
Jun 13 Javascript
javascript+canvas制作九宫格小程序
Dec 28 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
JS实现可自定义大小,可双击关闭的弹出层效果
Oct 16 Javascript
微信小程序 开发经验整理
Feb 15 Javascript
解决Mac安装thrift因bison报错的问题
May 17 Javascript
原生JS实现前端本地文件上传
Sep 08 Javascript
js事件on动态绑定数据,绑定多个事件的方法
Sep 15 Javascript
vue里面使用mui的弹出日期选择插件实例
Sep 16 Javascript
开发用到的js封装方法(20种)
Oct 12 Javascript
JS实现获取数组中最大值或最小值功能示例
Mar 02 Javascript
微信小程序—setTimeOut定时器的问题及解决
Jul 26 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常用正则表达式的整理汇总
2013/06/08 PHP
解密ThinkPHP3.1.2版本之模块和操作映射
2014/06/19 PHP
php字符串按照单词进行反转的方法
2015/03/14 PHP
php简单实现屏蔽指定ip段用户的访问
2015/04/29 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
php正则修正符用法实例详解
2016/12/29 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
ext jquery 简单比较
2010/04/07 Javascript
JavaScript编程开发中的五个实用小技巧
2010/07/22 Javascript
JS图片无缝、平滑滚动代码
2014/03/11 Javascript
一个检测表单数据的JavaScript实例
2014/10/31 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
项目实践一图片上传之form表单还是base64前端图片压缩(前端图片压缩)
2016/07/28 Javascript
微信小程序 参数传递实例代码
2017/03/20 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
JS实现随机生成10个手机号的方法示例
2018/12/07 Javascript
react 组件传值的三种方法
2019/06/03 Javascript
微信小程序实现下拉刷新动画
2019/06/21 Javascript
vue ssr+koa2构建服务端渲染的示例代码
2020/03/23 Javascript
openlayers实现地图弹窗
2020/09/25 Javascript
Python中处理时间的几种方法小结
2015/04/09 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
Python方法的延迟加载的示例代码
2017/12/18 Python
TensorFlow数据输入的方法示例
2018/06/19 Python
Python 找到列表中满足某些条件的元素方法
2018/06/26 Python
django框架使用orm实现批量更新数据的方法
2019/06/21 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
2019/08/22 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Python线程指南分享
2019/11/19 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
翻新二手苹果产品的网络领导者:Mac of all Trades
2017/12/19 全球购物
波兰品牌鞋履在线商店:Eastend.pl
2020/01/11 全球购物
说出ArrayList,Vector, LinkedList的存储性能和特性
2015/01/04 面试题
临床医学专业个人的自我评价
2013/09/27 职场文书
周年庆典答谢词
2015/01/20 职场文书
医院合作意向书范本
2015/05/08 职场文书