使用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 相关文章推荐
IE6与IE7中,innerHTML获取param的区别
Mar 15 Javascript
Tab切换组件(选项卡功能)实例代码
Nov 21 Javascript
js的参数有长度限制吗?发现不能超过2083个字符
Apr 20 Javascript
Jquery日历插件制作简单日历
Oct 28 Javascript
将form表单通过ajax实现无刷新提交的简单实例
Oct 12 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
深入浅析ES6 Class 中的 super 关键字
Oct 20 Javascript
Bootstrap模态对话框中显示动态内容的方法
Aug 10 Javascript
vscode 开发Vue项目的方法步骤
Nov 25 Javascript
JS尾递归的实现方法及代码优化技巧
Jan 19 Javascript
axios如何利用promise无痛刷新token的实现方法
Aug 27 Javascript
微信内置浏览器图片查看器的代码实例
Oct 08 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中的字符串函数
2006/11/24 PHP
header中Content-Disposition的作用与使用方法
2012/06/13 PHP
浅谈PHP强制类型转换,慎用!
2013/06/06 PHP
PHP获取youku视频真实flv文件地址的方法
2014/12/23 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
2015/12/19 PHP
YII分模块加载路由的实现方法
2018/10/01 PHP
点击下载链接 弹出页面实现代码
2009/10/01 Javascript
iframe 异步加载技术及性能分析
2011/07/19 Javascript
jquery 清空file域示例(兼容个浏览器)
2013/10/11 Javascript
$.extend 的一个小问题
2015/06/18 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
JS实现拖拽的方法分析
2016/12/20 Javascript
JavaScript函数节流和函数防抖之间的区别
2017/02/15 Javascript
详解JS异步加载的三种方式
2017/03/07 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
详解vue项目中使用token的身份验证的简单实践
2019/03/08 Javascript
JS使用cookie保存用户登录信息操作示例
2019/05/30 Javascript
原生JavaScript实现滑动拖动验证的示例代码
2019/12/06 Javascript
微信小程序个人中心的列表控件实现代码
2020/04/26 Javascript
Python  连接字符串(join %)
2008/09/06 Python
python 装饰器功能以及函数参数使用介绍
2012/01/27 Python
Python中使用logging模块打印log日志详解
2015/04/05 Python
详解Python中的正则表达式的用法
2015/04/09 Python
python实现单线程多任务非阻塞TCP服务端
2017/06/13 Python
python构建深度神经网络(DNN)
2018/03/10 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
python中通过pip安装库文件时出现“EnvironmentError: [WinError 5] 拒绝访问”的问题及解决方案
2020/08/11 Python
期末自我鉴定
2014/01/23 职场文书
运动会入场词200字
2014/02/15 职场文书
课外小组活动总结
2014/08/27 职场文书
2014乡镇干部纪律作风整顿思想汇报
2014/09/13 职场文书
张家口市高新区党工委群众路线教育实践活动整改方案
2014/10/25 职场文书
优秀共产党员推荐材料
2014/12/18 职场文书
安全学习心得体会范文
2016/01/18 职场文书
财产分割协议书
2016/03/22 职场文书