1

I modified the original ngAnimateSwap example this is found in the docs enter link description here to use a boolean expression instead of an integer to trigger the slide animation.

I would expect the banner to rotate between 'true' and 'false' however instead, only the 'true' appears, but the 'false' does not. From the angular docs: "ngAnimateSwap is a animation-oriented directive that allows for the container to be removed and entered in whenever the associated expression changes. " so I would have expected changing between true and false would cause the container to animate.

In the html:

  <div class="container" ng-controller="AppCtrl">
    <div ng-animate-swap="abool" class="cell swap-animation" ng-class="colorClass(abool)">
      {{ abool }}
    </div>
  </div>

In the controller:

$scope.abool = false;
$interval(function() {
  $scope.abool = !$scope.abool
}, 1000);

$scope.colorClass = function(abool) {
  return abool ? 'red' : 'blue';
};

Here is the plunkr showing the example: http://plnkr.co/edit/iKE5BekgpxOqX1YE952Z?p=preview

As another test, if you update to my plunkr to change abool to toggle between 1 and -1, then the animation looks as expected - sliding between 1 and -1.

L. Desjardins
  • 1,465
  • 1
  • 12
  • 22

1 Answers1

2

When you set abool to the boolean value false angular thinks you don't want to interpolate {{abool}}.

For what you're trying to achieve, you need the string value of the boolean.

var abool = false;
$interval(function() {
  abool = !abool;
  $scope.abool = abool.toString();
  $scope.colorClass = abool ? 'red' : 'blue';
}, 1000);

Also, you don't need to use ng-class. a simple interpolation would do just fine:

<div ng-animate-swap="abool" class="cell swap-animation {{colorClass}}">
   {{ abool }}
</div>

Working plunker.

Daniel
  • 6,194
  • 7
  • 33
  • 59
  • I see - from from the angular docs: "ngAnimateSwap is a animation-oriented directive that allows for the container to be removed and entered in whenever the associated expression changes." So I thought changing between true and false would have triggered the animation. – L. Desjardins Mar 25 '16 at 15:29