1

我修改了文档中的原始 ngAnimateSwap 示例,在此处输入链接描述,以使用布尔表达式而不是整数来触发幻灯片动画。

我希望横幅在“真”和“假”之间旋转,但是,只有“真”出现,而“假”不出现。来自角度文档:“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 之间滑动。

4

1 回答 1

2

当您设置abool为布尔值时,false角度认为您不想插值{{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>

工作笨拙

于 2016-03-24T20:00:04.057 回答