ngAnimateSwap - 使用布尔表达式不按预期动画

时间:2016-03-24 19:16:26

标签: javascript angularjs ng-animate angularjs-1.5

我修改了原始ngAnimateSwap示例,这可以在docs enter link description here中找到,使用布尔表达式而不是整数来触发幻灯片动画。

我希望横幅在“true”和“false”之间旋转,但相反,只会显示“true”,但“false”则不会。从angular docs:“ngAnimateSwap是一个面向动画的指令,允许在关联的表达式发生变化时删除并输入容器。”所以我希望在true和false之间进行更改会导致容器动画化。

在html中:

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

在控制器中:

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

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

以下是显示示例的plunkr: http://plnkr.co/edit/iKE5BekgpxOqX1YE952Z?p=preview

作为另一项测试,如果您更新到我的plunkr以更改abool以在1和-1之间切换,则动画将按预期显示 - 在1和-1之间滑动。

1 个答案:

答案 0 :(得分:2)

当您将abool设置为布尔值false时,angular认为您不想插入{{abool}}

对于您要实现的目标,您需要布尔值的字符串值。

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

此外,您不需要使用ng-class。一个简单的插值就可以了:

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

工作plunker