使用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 写类方式之二
Jul 05 Javascript
JavaScript获取网页中第一个链接ID的方法
Apr 03 Javascript
js+html5实现canvas绘制镂空字体文本的方法
Jun 05 Javascript
jQuery弹簧插件编写基础之“又见弹窗”
Dec 11 Javascript
JavaScript、jQuery与Ajax的关系
Jan 24 Javascript
json定义及jquery操作json的方法
Oct 03 Javascript
JavaScript数组操作详解
Feb 04 Javascript
基于AngularJS的拖拽文件上传的实例代码
Jul 15 Javascript
js 将canvas生成图片保存,或直接保存一张图片的实现方法
Jan 02 Javascript
对angular 实时更新模板视图的方法$apply详解
Oct 09 Javascript
jQuery-App输入框实现实时搜索
Nov 19 jQuery
解决vue项目本地启动时无法携带cookie的问题
Feb 06 Vue.js
使用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/10/09 PHP
php中is_null,empty,isset,unset 的区别详细介绍
2013/04/28 PHP
浅谈PHP接收POST数据方式
2015/06/05 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
奇妙的js
2007/09/24 Javascript
几个比较经典常用的jQuery小技巧
2010/03/01 Javascript
模拟多级复选框效果的jquery代码
2013/08/13 Javascript
javascript数字时钟示例分享
2014/04/23 Javascript
原生javascript实现图片滚动、延时加载功能
2015/01/12 Javascript
即将发布的jQuery 3 有哪些新特性
2016/04/14 Javascript
微信小程序 删除项目工程实现步骤
2016/11/10 Javascript
vue+axios实现登录拦截的实例代码
2017/05/22 Javascript
原生JS实现的雪花飘落动画效果
2018/05/03 Javascript
详解vue组件开发脚手架
2018/06/15 Javascript
vue 监听键盘回车事件详解 @keyup.enter || @keyup.enter.native
2018/08/25 Javascript
微信公众号开发之微信支付代码记录的实现
2019/10/16 Javascript
详细介绍解决vue和jsp结合的方法
2020/02/06 Javascript
JavaScript实现字符串与HTML格式相互转换
2020/03/17 Javascript
解决vue 退出动画无效的问题
2020/08/09 Javascript
pydev使用wxpython找不到路径的解决方法
2013/02/10 Python
python实现获取Ip归属地等信息
2016/08/27 Python
Django中的用户身份验证示例详解
2019/08/07 Python
Pytorch实现GoogLeNet的方法
2019/08/18 Python
pygame实现俄罗斯方块游戏(对战篇1)
2019/10/29 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
Timberland德国官网:靴子、鞋子、衣服、夹克及配件
2019/12/10 全球购物
小班上学期评语
2014/05/05 职场文书
慈善晚会策划方案
2014/05/14 职场文书
信用卡工资证明格式
2014/09/13 职场文书
机关班子查摆问题及整改措施
2014/10/28 职场文书
行风评议整改报告
2014/11/06 职场文书
音乐会主持人开场白
2015/05/28 职场文书
2021年国产动漫公司排行前十名,玄机科技上榜,第二推出过铠甲勇士
2022/03/18 杂记