Ich verschiebe einige Elemente auf der Seite mit ng-repeat
und CSS-Übergängen. Wenn ich das Datenarray unter Verwendung unshift
ändere, geht die Liste schön über. (In meiner Anwendung bin ich Position sowie Opazität übergehen.)Warum treten in ng-repeat-Listen CSS-Übergänge für unshift() und nicht für shift() auf?
Wenn ich jedoch shift
verwenden, um das Array zu aktualisieren, wird das DOM sofort ohne Übergang aktualisiert.
Here's a demo von einem Ansatz, bei dem alles wie erwartet neben den Übergängen funktioniert. Vergleichen Sie das Verhalten bei Verwendung der beiden Schaltflächen.
$scope.items.push($scope.items.shift());
Here's another demo eines alternativen Ansatz, bei dem die Übergänge arbeiten, aber das Array verliert jedes Mal ein Element die Funktion ausgeführt wird.
$scope.items.shift($scope.items.push());
Die Idee ist, dass der Benutzer unbegrenzt durch die Elemente im Array zyklieren kann und die CSS-Übergänge in beiden Richtungen auftreten. Das Problem scheint zu sein, dass AngularJS das DOM in einem Fall aktualisiert, aber nicht in dem anderen, obwohl ich dies bei meinen Tests nicht nachweisen konnte.
Auch, basierend auf einigen lesen ich habe ich versucht mit `track by item.id 'ohne Erfolg. Vielen Dank.
Tatsächlich scheint das zu funktionieren. Hier ist eine Geige, die mehr zeigt, als was ich eigentlich mache. Ich habe Probleme, es in meiner App zu verwenden. http://jsfiddle.net/isherwood/w123q5na/5 – isherwood
Bingo. Ich hatte in meiner Vorlage eine 'Spur nach'-Anweisung, die die Dinge versagte. Vielen Dank! – isherwood
Awesome, froh, ich könnte helfen. Auch wenn es eine seltsame Lösung ist, die sich eher wie ein Hack anfühlt. :) – jnthnjns