我修改了原始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之间滑动。
答案 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。