使用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 相关文章推荐
Jquery easyui 下loaing效果示例代码
Aug 12 Javascript
js冒泡法和数组转换成字符串示例代码
Aug 14 Javascript
js获取和设置属性的方法
Feb 20 Javascript
jQuery Migrate 1.1.0 Released 注意事项
Jun 14 Javascript
H5用户注册表单页 注册模态框!
Sep 17 Javascript
使用react-router4.0实现重定向和404功能的方法
Aug 28 Javascript
通过js控制时间,一秒一秒自己动的实例
Oct 25 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
May 26 jQuery
js限制input只能输入有效的数字(第一个不能是小数点)
Sep 28 Javascript
Vue的生命周期操作示例
Sep 17 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
Sep 27 Javascript
深入学习Vue nextTick的用法及原理
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 Hash函数,增强密码安全
2011/02/25 PHP
php 面向对象的一个例子
2011/04/12 PHP
PHP 获取MySQL数据库里所有表的实现代码
2011/07/13 PHP
yii2.0使用Plupload实现带缩放功能的多图上传
2015/12/22 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
ajaxControlToolkit AutoCompleteExtender的用法
2008/10/30 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
JS维吉尼亚密码算法实现代码
2010/11/09 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
用Javascript来生成ftp脚本的小例子
2013/07/03 Javascript
jquery $(this).attr $(this).val方法使用介绍
2013/10/08 Javascript
js中判断对象是否为空的三种实现方法
2013/12/23 Javascript
回车直接实现点击某按钮的效果即触发单击事件
2014/02/27 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
jQuery封装animate.css的实例
2018/01/04 jQuery
Vue 一键清空表单的实现方法
2020/02/07 Javascript
JS 获取文件后缀,判断文件类型(比如是否为图片格式)
2020/05/09 Javascript
Vue项目配置跨域访问和代理proxy设置方式
2020/09/08 Javascript
JS canvas实现画板和签字板功能
2021/02/23 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
关于Python中的向量相加和numpy中的向量相加效率对比
2019/08/26 Python
python实现的发邮件功能示例
2019/09/11 Python
详解Python之Scrapy爬虫教程NBA球员数据存放到Mysql数据库
2021/01/24 Python
中国电视购物:快乐购
2017/02/04 全球购物
美国孕妇装品牌:Destination Maternity
2018/02/04 全球购物
屈臣氏马来西亚官网:Watsons马来西亚
2019/06/15 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
集体备课反思
2014/02/12 职场文书
家长会主持词开场白
2014/03/18 职场文书
新员工试用期自我鉴定
2014/04/17 职场文书
JS 4个超级实用的小技巧 提升开发效率
2021/10/05 Javascript
基于Python实现西西成语接龙小助手
2022/08/05 Golang