2014-12-16 2 views
0

У меня есть 5 элементов в массиве. Когда я перетаскиваю их, я вижу анимацию только для предметов, которые имеют более высокий индекс, а другой просто прыгают в новое место.AngularJS - только анимация в одном направлении?

<div ng-repeat="item in items track by item.value" class="TestItem" ng-style="{'top' : $index * 20 + 'px'}"> 
     {{item.name}} 
    </div> 

CSS

.TestItem{ 
    transition: all linear 2s; 
    position: absolute; 
} 

Как я могу сделать все элементы анимации в своей новой верхней позиции ??

+0

И ваше правило css? – PSL

+0

добавлен css на вопрос! Благодарю. – dani

+0

Можно ли положить plunkr вместе? Вам нужно увидеть, как вы добавляете элементы и т. Д., Так как Angular перестроит весь ваш список, если вы поместите их в переднюю часть массива, но не если вы поместите их в конец. – Darren

ответ

0

Элементы, которые заканчиваются нижним индексом, будут удалены из DOM и вставлены в их новые положения. Когда элементы добавляются в DOM, их переходы CSS не анимируются (по крайней мере, ни в одном из основных браузеров).

Остальные элементы останутся в DOM, получите новые значения top, и их переходы будут анимированы.

Ниже приведена демонстрация с использованием ngAnimate и ng-move для окраски движущихся элементов красного цвета (те, которые были удалены из вставленных DOM-аксессуаров). Как описано выше, это элементы, которые не получают анимированный переход top.

Демо:http://plnkr.co/edit/7QFMSgo60vQ2qfYzqsBI?p=preview

Одним из путей решения этой проблемы можно найти here.