$scope
プロパティに基づいて表示/非表示する<div>
のAngularJS 1.2.2 Webアプリケーションがあります。 ngAnimate
モジュールを使用して、<div>
の表示と非表示をアニメーション表示します。ngShow/ngHideのみをアニメーション化するようにngAnimateに通知する
<div id="square" ng-show="showSquare" class="animate-shiny"></div>
また、私はこの<div>
に配置したいクラスを持っており、このために私はngClass
を使用しています。
<div id="square" ng-show="showSquare" class="animate-shiny" ng-class="{ cool: extraCool }"></div>
そして、それはそう起こるように、時にはそのクラスは<div>
は/非表示の表示されたときと同じ瞬間に適用されます。これにより、アニメーションの表示/非表示がもう機能しなくなります。確かにngAnimate
をそのアニメーションに使用したくない場合でも、ngClass
はもっとアニメーション化するのが面白いです。
Here's a Plnkr that demonstrates the behavior。表示/非表示ボタンをクリックすると大きな効果が得られます。クールクールボタンをクリックすると効果的ですが、これらの2つを組み合わせたボタンは、アニメーションの表示/非表示を解除します。
これを修正するにはどうすればよいですか?手動で$animate
を指定しなくても、それを行うことはできますか?
ありがとうございます!
これはかなり甘いです! – Beyers
http://docs.angularjs.org/api/ngAnimateの "usage"セクションのドキュメントを参照してください。*アニメーションの詳細については、各ディレクティブのページをご覧ください。より具体的なアニメーションをトリガするためのディレクティブ固有のクラス名を見つけることができます。 – kontur
これは私には使えますが、まだ変わった動作があります。アニメーションを4秒間遅くしてから正方形(最初のボタン)を表示してから両方の変更を適用すると(最後のボタン)、クールな効果のアニメーションが表示されません。私の四角形は 'ng-animate'を使ってアニメーション化されますが、' .cool'クラスはもはやアニメーションに適用されません。私はなぜ、移行が適切に定義されているのか分からない... –