AngularJS と ng-class を使用して、クラスが 3 つの可能な状態の間で変化するときにアニメーション化しようとしています。div のクラスで表される 3 つの状態になることができる div があります。状態は次のように定義されます。
<div class='myDiv'></div>
<div class='myDiv foo'></div>
<div class='myDiv bar'></div>
クラスfoo
とbar
は排他的な意味で<div class="myDiv foo bar"></div>
はないことに注意してください。次のように ng-class ディレクティブを使用しています。
<div class="myDiv" ng-class="{foo: first, bar: second}"></div>
コントローラーは、boolean 値 first と second の両方が同時に false になる可能性がありますが、true にはならないことを保証します。
ngAnimate は状態 1<-->2 と 1<-->3 の間の CSS 遷移を正しく検出しますが、2<-->3 からは検出しません。.myDiv.foo
、.myDiv.bar
、などのクラス セレクターに CSS トランジション コードを追加しようとしまし.myDiv.foo-add-active
たが、ngAnimate がそれらを検出しない (つまり、-add および -add-active クラスを追加しない) か、アニメーション クラスが追加されますが、遷移は発生しません。
これは、問題を示すjsFiddleへのリンクです。いずれかのボタンをクリックしてから再度クリックすると、作業中のトランジションが表示されます。どちらかのボタンをクリックしてからもう一方のボタンをクリックすると、トランジションがないことがわかります。
ngAnimate が適切に取得する魔法の遷移セットはありますか? それとも、これは ng-class を使用せずに独自のカスタム ディレクティブを記述する必要がある場合ですか?