5

I dont understand why the callback gets called right away, without any delay, i've read the doc it says that it parses the css to retrieve the transition duration.

but it doesn't seem to work, here is my code :

this is my slide directive :

'use strict'

class SlideController
  constructor: ($log, $scope) ->
    console.log 'controller init.'


class Slide
  constructor: ($log,$animate) ->
    link = (scope, element, attrs) =>
      scope.$watch 'slide.animation', (newValue,oldValue)->
        $animate.addClass element,'enter-right',()->
          console.log 'Animation ended!'



    return {
    link
    controller: ['$log', '$scope', SlideController]
    replace: true
    restrict: 'E'
    scope:
      slide: '='
    templateUrl: '/views/directives/postSlide.html'
    transclude: true
    }

angular.module('app').directive 'postSlide', ['$log','$animate', Slide]

and here is my css :

.post-slide.enter-left, .post-slide.leave-left, .post-slide.enter-right, .post-slide.leave-right{
  position:absolute;
  left:0px;
  top:0px;
}

/**
  Enter/leave right
**/
.post-slide.enter-right {
  -webkit-animation:0.5s enter-right;
  animation:0.5s enter-right;
  z-index:100;
  background-color:darkgreen;

}

.post-slide.leave-right {
  -webkit-animation:0.5s leave-right;
  animation:0.5s leave-right;
  z-index:10;
  background-color:darkred;
}

@keyframes enter-right {
  from { left:100%; }
  to { left:0; }
}

@-webkit-keyframes enter-right {
  from { left:100%; }
  to { left:0; }
}

@keyframes leave-right {
  from { left:0; }
  to { left:-100%; }
}

@-webkit-keyframes leave-right {
  from { left:0; }
  to { left:-100%; }
}
popo joe
  • 910
  • 1
  • 9
  • 24

1 Answers1

0

I think you dont use callback in a proper way, addClass returns promise, not input param with function. You should have smth like this, in pure js:

scope.$watch('slide.animation', function(newValue, oldValue) {
  return $animate.addClass(element, 'enter-right').then(function() {
    return console.log('Animation ended!');
  });
});

Advice: Increase animation duration to 10s, open console, find animated elements and see how classes is applied during the animation.

Dmitry K
  • 319
  • 2
  • 8