使用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 相关文章推荐
简述JavaScript中正则表达式的使用方法
Jun 15 Javascript
jquery插件ajaxupload实现文件上传操作
Dec 09 Javascript
使用JavaScript获取Request中参数的值方法
Sep 27 Javascript
js制作支付倒计时页面
Oct 21 Javascript
jQuery中页面返回顶部的方法总结
Dec 30 Javascript
Vue组件化通讯的实例代码
Jun 23 Javascript
jQuery图片缩放插件smartZoom使用实例详解
Aug 25 jQuery
js 中rewrap-ajax.js插件实例代码
Oct 20 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
详解webpack-dev-server使用http-proxy解决跨域问题
Jan 13 Javascript
js判断鼠标移入移出方向的方法
Jun 24 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可生成缩略图的文件上传类实例
2014/12/17 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
Smarty模板引擎缓存机制详解
2016/05/23 PHP
PHP 二级子目录(后台目录)设置二级域名
2017/03/02 PHP
jquery UI 1.72 之datepicker
2009/12/29 Javascript
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
通过Jquery的Ajax方法读取将table转换为Json
2014/05/31 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
javascript创建动态表单的方法
2015/07/25 Javascript
jquery实现适用于门户站的导航下拉菜单效果代码
2015/08/24 Javascript
JS延时提示框实现方法详解
2015/11/26 Javascript
vue2中的keep-alive使用总结及注意事项
2017/12/21 Javascript
jQuery 操作 HTML 元素和属性的方法
2018/11/12 jQuery
Node.js的进程管理的深入理解
2019/01/09 Javascript
微信公众号获取用户地理位置并列出附近的门店的示例代码
2019/07/25 Javascript
关于ckeditor在bootstrap中modal中弹框无法输入的解决方法
2019/09/11 Javascript
JQuery发送ajax请求时中文乱码问题解决
2019/11/14 jQuery
[01:01:13]2018DOTA2亚洲邀请赛 4.5 淘汰赛 Mineski vs VG 第三场
2018/04/06 DOTA
分享一个常用的Python模拟登陆类
2015/03/29 Python
mac安装pytorch及系统的numpy更新方法
2018/07/26 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
Python全栈之列表数据类型详解
2019/10/01 Python
Python3实现发送邮件和发送短信验证码功能
2020/01/07 Python
python使用openpyxl操作excel的方法步骤
2020/05/28 Python
opencv python 对指针仪表读数识别的两种方式
2021/01/14 Python
Made in Design意大利:现代家具、名家灯具和装饰
2020/10/27 全球购物
物流管理专业大学生自荐信
2013/10/04 职场文书
班级活动策划书
2014/02/06 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
亮剑观后感300字
2015/06/05 职场文书
暖春观后感
2015/06/08 职场文书
优化经济发展环境工作总结
2015/08/11 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
Angular CLI发布路径的配置项浅析
2021/03/29 Javascript
高性能跳频抗干扰宽带自组网电台
2022/02/18 无线电