使用AngularJS实现可伸缩的页面切换的方法


Posted in Javascript onJune 19, 2015

AngularJS 1.2 通过引入基于纯CSS class的切换和动画,在一个单页面应用创建页面到页面的切换变得更加的容易。只需要使用一个ng-view,让我们来看一下,一个引入众多的不同切换的可伸缩方法,以及指定的每个页面如何切入和切出。

演示: http://embed.plnkr.co/PqhvmW/preview

首先,标记:
 

<div class="page-container">
  <div ng-view class="page-view" ng-class="pageAnimationClass"> </div>
 </div>
既然ng-view使用进入/离开动画,那么就能简单地在DOM里使用两个 ng-view 元素来进行新视图切入和旧视图切出。因此,我们在使用相对定位的 page-container 元素里,使用绝对定位建立了ng-view,从而支持任意一种定位切换。

'go' 方法

在单页面应用里,我们仍想启用通过URL导航和确保浏览器的回退和下一步按钮如预期的功能。所以一旦我们在$routeProvider设好我们的路由,模板,控制器(可选的解析),我们可以在一个 ng-click 里使用一个相对路径来直接切换页面:
 

<a ng-click="/page2">Go to page 2</a>

那样也可以工作,但是我们需要在ng-view 硬编码指定切换一个class 。以此代替,让我们在 $rootScope 上创建一个 'go' 方法,可以让我们指定一个路径和一个像这样的切换:
 

<a ng-click="go('/page2', 'slideLeft')">Go to page 2</a>

这是我们 $rootScope 'go' 方法:
 

$rootScope.go = function (path, pageAnimationClass) {
 
  if (typeof(pageAnimationClass) === 'undefined') { // Use a default, your choice
    $rootScope.pageAnimationClass = 'crossFade';
  }
     
  else { // Use the specified animation
    $rootScope.pageAnimationClass = pageAnimationClass;
  }
 
  if (path === 'back') { // Allow a 'back' keyword to go to previous page
    $window.history.back();
  }
     
  else { // Go to the specified path
    $location.path(path);
  }
};

现在,任何你第二个参数指定的 切换类 将会添加到 ng-view 并且 go 方法将会用指定的第一个参数改变页面路径。

切换类

接下来要做的就是创建一个任意数量的切换类,并使用 ngAnimate module 提供的钩子,例如:
 

/* slideLeft */
.slideLeft {
  transition-timing-function: ease;
  transition-duration: 250ms;
}
 
.slideLeft.ng-enter {
  transition-property: none;
  transform: translate3d(100%,0,0);
}
 
.slideLeft.ng-enter.ng-enter-active {
  transition-property: all;
  transform: translate3d(0,0,0);
}
 
.slideLeft.ng-leave {
  transition-property: all;
  transform: translate3d(0,0,0);
}
 
.slideLeft.ng-leave.ng-leave-active {
  transition-property: all;
  transform: translate3d(-100%,0,0);
}

Javascript 相关文章推荐
16个最流行的JavaScript框架[推荐]
May 29 Javascript
Js(JavaScript)中,弹出是或否的选择框示例(confirm用法的实例分析)
Jul 09 Javascript
jquery无法设置checkbox选中即没有变成选中状态
Mar 27 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
jQuery正则验证注册页面经典实例
Jun 10 jQuery
JavaScript解析任意形式的json树型结构展示
Jul 23 Javascript
JavaScript中concat复制数组方法浅析
Jan 20 Javascript
用原生 JS 实现 innerHTML 功能实例详解
Apr 03 Javascript
微信小程序实现左侧滑栏过程解析
Aug 26 Javascript
通过angular CDK实现页面元素拖放的步骤详解
Jul 01 Javascript
ajax请求前端跨域问题原因及解决方案
Oct 16 Javascript
JavaScript实现九宫格拖拽效果
Jun 28 Javascript
使用AngularJS实现表单向导的方法
Jun 19 #Javascript
举例详解AngularJS中ngShow和ngHide的使用方法
Jun 19 #Javascript
使用AngularJS和PHP的Laravel实现单页评论的方法
Jun 19 #Javascript
测试IE浏览器对JavaScript的AngularJS的兼容性
Jun 19 #Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 #Javascript
Backbone.js的Hello World程序实例
Jun 19 #Javascript
使用AngularJS处理单选框和复选框的简单方法
Jun 19 #Javascript
You might like
php的array_multisort()使用方法介绍
2012/05/16 PHP
PHP内存缓存Memcached类实例
2014/12/08 PHP
初识laravel5
2015/03/02 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
2016/01/28 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
jquery+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
2010/04/25 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
JavaScript中实现Map的示例代码
2015/09/09 Javascript
javascript图片延迟加载实现方法及思路
2015/12/31 Javascript
微信小程序 navigation API实例详解
2016/10/02 Javascript
JS字符串false转boolean的方法(推荐)
2017/03/08 Javascript
浅谈Vue.js中的v-on(事件处理)
2017/09/05 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
对layui中table组件工具栏的使用详解
2019/09/19 Javascript
[01:05:59]Mineski vs Secret 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
python 3调用百度OCR API实现剪贴板文字识别
2018/09/04 Python
python将一组数分成每3个一组的实例
2018/11/14 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
对python中arange()和linspace()的区别说明
2020/05/03 Python
Python实现JS解密并爬取某音漫客网站
2020/10/23 Python
详解pandas赋值失败问题解决
2020/11/29 Python
基于PyTorch中view的用法说明
2021/03/03 Python
CSS3点击按钮实现背景渐变动画效果
2016/10/19 HTML / CSS
浅谈HTML5 &amp; CSS3的新交互特性
2016/07/19 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
COS美国官网:知名服装品牌
2019/04/08 全球购物
AOP的定义以及作用
2013/09/08 面试题
如果重写了对象的equals()方法,需要考虑什么
2014/11/02 面试题
深圳茁壮笔试题
2015/05/28 面试题
深入开展党的群众路线教育实践活动方案
2014/02/04 职场文书
品质口号大全
2014/06/17 职场文书
人事文员岗位职责
2015/02/04 职场文书
2016会计专业自荐信范文
2016/01/28 职场文书
2019脱贫攻坚工作总结报告范本!
2019/08/06 职场文书
JS实现简单的九宫格抽奖
2022/06/28 Javascript