javascript - Angular.js 页面转换 & $animate.addClass

标签 javascript css angularjs angularjs-animation

我想在我的路由更改时向我的包装器添加一个特定的类,以便我可以控制将触发的 CSS 动画。

我试着这样做: http://plnkr.co/edit/KRwBFb6bCTkit9eKg8yb?p=preview

$rootScope.$on( "$routeChangeSuccess", function(event, next, current) {
   //Code to skip animation on the first load/page
    if( 'undefined' === typeof current || $scope.pageClass == '' ) return false;


    var elem = document.querySelector("#wrapper");
    var viewElem = angular.element(elem);

    $animate.addClass(viewElem, $scope.pageClass).then(function(){
        $animate.removeClass(viewElem, $scope.pageClass);
    });
});

但是没有添加类,我是不是用错了这个函数?

最佳答案

您的代码所做的是将正确的 CSS 类添加到 #wrapper 元素,然后在添加后立即将其删除。 addClass 函数(您用来删除类)返回的 promise 在添加类时得到解决,而不是在类定义的动画完成时得到解决。

如果您想在动画完成后从 #wrapper 中删除 CSS 类,以便您可以为下一个动画重置它,您需要将代码绑定(bind)到 enter 事件代替。类似于以下内容:

$animate.on('enter', angular.element(document.querySelector("#wrapper")),
     function callback(element, phase) {
       if (phase === 'close') {
         $animate.removeClass(angular.element(document.querySelector("#wrapper")), 'RL');
         $animate.removeClass(angular.element(document.querySelector("#wrapper")), 'LR');
       }
     }
  );

关于javascript - Angular.js 页面转换 & $animate.addClass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30778781/

相关文章:

html - 填充不适用于带边框的 div

angularjs - 需要使用 css 技巧将元素放在前面

android - 将 Cordova console.log 写入文件

java - 在 WebView.replaceContent 中加载本地 CSS 文件

javascript - 更新 localStorage 中的项目时出现问题

html - 主动焦点悬停 : keep parent focus hover when go to sub menu

html - 为什么我的表格在我的导航栏之后不在新行开始?

javascript - AngularJS 中的计时器

javascript - AngularFire Google OAuth 未检索用户的电子邮件

javascript - AngularJS 嵌套 ng-repeat 与分组列表不循环