大佬教程收集整理的这篇文章主要介绍了AngularJS中与路径相关的CSS页面转换,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
下面我的’Plunker’通过监听$routeChangesuccess事件然后将一个特定于转换风格的CSS类应用于进入和离开视图(灵感来自http://phillippuleo.com/articles/scalable-approach-page-transitions-angularjs)来实现这一点:
http://plnkr.co/edit/ee4CHfb8kZC1WxtDM9wr?p=preview
但是,在事件监听器中调用$scope.$apply()会使AngularJS发出错误消息’$digest has progress in’.但是如果我不调用$scope.$apply()则不会更新离开视图的CSS类,并且动画无法正常工作.
这里发生了什么?
当触发$routeChangesuccess事件时,ngView已经删除了该类,然后才有机会改变方向.你可以通过快速应用新类来覆盖它,这样就不会注意到它,但是你会得到正在进行的摘要错误.
我提出了一个指令:
app.directive('animClass',function($routE){ return { link: function(scope,elm,attrs){ var enterClass = $route.current.animate; elm.addClass(enterClass); scope.$on('$destroy',function(){ elm.removeClass(enterClass); elm.addClass($route.current.animatE); }) } } });
为每个路由声明一个animate选项:
app.config(function($routeProvider) { $routeProvider. when("/page1",{ templateUrl: "page1.html",controller: "Page1Ctrl",animate: "slideLeft" }). when("/page2",{ templateUrl: "page2.html",controller: "Page2Ctrl",animate: "slideRight" }). otherwise({ redirectTo: "/page1" }); });
并将其添加到ngView,如下所示:
<div ng-view ng-controller="ViewCtrl" anim-class class="view"></div>
CSS:
.view { width: 100%; padding-left: 1em; position:absolute; top: 0; left: 0; } .slideLeft.ng-enter,.slideLeft.ng-leave,.slideRight.ng-enter,.slideRight.ng-leave { -webkit-transition:all 1s; transition:all 1s; } .slideLeft.ng-enter { left:100%; } .slideLeft.ng-enter.ng-enter-active { left:0; } .slideLeft.ng-leave.ng-leave-active { left:-100%; } .slideRight.ng-enter { left:-100%; } .slideRight.ng-enter.ng-enter-active { left:0; } .slideRight.ng-leave.ng-leave-active { left:100%; }
以上是大佬教程为你收集整理的AngularJS中与路径相关的CSS页面转换全部内容,希望文章能够帮你解决AngularJS中与路径相关的CSS页面转换所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。