2016-04-08 17 views
0

直面する問題の簡略化されたバージョン:ng-repeatを使用するAngularビューで表示される配列内の項目のリストがあります。いくつかのCSSと...ng-repeat内の1つの状態から別の状態へのAngularJSのアニメーション

<li ng-repeat="item in items"> 
    <div class="bar" ng-style="{'width': item.percent + '%'}">{{item.percent}}</div> 
</li> 

、それはバーのように見えるよう、うまくいけば幅をアニメーション化する...

.bar { 
    height: 1em; 
    background: blue; 
    transition: width 0.5s ease-in-out; 
} 

時々、私は、新しいデータで全体items配列を更新されpercentの値が変更されます。以前のパーセント値から新しい値にアニメーション化したいのですが、ng-repeatによってリスト全体が再描画されているようですので、以前のスタイルは失われており、transitionのアニメーションは決して起こっていません。

私は他の解決策を検討しましたが、入退室のみを処理するように見えますが、変更することはありません。このアニメーションはAngularとCSSだけを使ってどうやって起こりますか?

+0

アイテムアレイをどのように更新しますか? –

答えて

1

ノードが毎回再作成されないように「track by」を試しましたか?

<li ng-repeat="item in items track by $index"> 
    <div class="bar" ng-style="{'width': item.percent + '%'}">{{item.percent}} </div> 
</li> 
+0

ありがとう! 'track by'の詳細:https://docs.angularjs.org/api/ng/directive/ngRepeat#tracking-and-duplicates – Luke

+1

あなたの" item "にいくつかの一意の識別子プロパティがある場合は、 $ indexではなくそのプロパティで追跡する必要があります – mcgraphix

関連する問題