1

テストケース: http://plnkr.co/edit/dsG3gxFomAK8Q15Xfouj?p=preview

上記のテスト ケースは、ng-repeatディレクティブで 2 回レンダリングされたデータのリストです。1回は使用せずng-include、1回は使用しng-includeます。

CSS トランジションは、ディレクティブでサポートされている 3 つすべて ( enterleave、およびmove ) のアニメーションに対してセットアップされます。を使用しないng-repeat場合、 3 つのアニメーションはすべて正常に動作しますが、 を使用してリスト内の各項目のテンプレートをロードする場合は、 Enterアニメーションのみが動作します。ng-includeng-include

これはバグだと確信していますが、よくわかりangular-animateません。ng-repeatng-include組み合わせて使用​​するときに何か間違ったことをしている可能性があります。angular-animateソースコードを掘り下げて問題を修正しようとしましたが、できませんでした。私が(できれば本当に)考えたのは、ng-includeディレクティブがレンダリングされたすべてのアイテムのすぐ上にコメントノードを追加し、このノードがの働きng-repeatを捨てているということだけです。angular-animateこれは、2 つの実装の唯一の顕著な違いでもあります。

また、アニメーションが設定されていない場合でも、すべての機能が正常に動作することに注意してください。しかし、 を使用した例ng-includeでは、(アイテムを上下に移動するための) アニメーションがおかしくなるだけでなく、アイテムも移動しません。

これはバグですか?もしそうなら、既知の回避策はありますか? github で angular.js の問題を検索してみましたが、回避策が見つかりませんでした (見つけたものは機能しません)。これについて助けてくれてありがとう。

4

1 に答える 1

1

ただし、ng-include を使用してリスト内の各項目のテンプレートをロードする場合、入力アニメーションのみが機能します。

実際、Chrome では一貫性のない動作が発生します。時々動くアニメーションが機能します。

もしそうなら、既知の回避策はありますか?

ng-repeat-ed / ng-include-ed 要素をネストできるため、ディレクティブは異なる要素にあるため、原因が何であれ、競合は発生しません。http://plnkr.co/edit/dVniIVUaGS8y7wHe7CuT?p=previewの例

編集:plnkrリンクを修正。

于 2013-11-25T12:52:39.713 に答える