Sto avendo qualche strano problema con ng-class
, e sospetto che abbia a che fare con le condizioni di gara.Condizioni di gara con ng-class e animazione
Ecco plunker example
Ecco il relativo codice js
self.slideLeft = function() {
if (self.end_index < self.list_of_stuff.length) {
self.direction = 'left';
debugger;
self.start_index = self.start_index + 4;
self.end_index = self.end_index + 4;
self.display_list = self.list_of_stuff.slice(self.start_index, self.end_index);
}
}
self.slideRight = function() {
if (self.start_index > 0) {
self.direction = 'right';
debugger;
self.start_index = self.start_index - 4;
self.end_index = self.end_index - 4;
self.display_list = self.list_of_stuff.slice(self.start_index, self.end_index);
}
}
Ecco l'rilevante html
<div class="stuff-wrapper">
<div class="stuff"
ng-class="bCtrl.directionClass()"
ng-repeat="stuff in bCtrl.display_list">
{{stuff}}
</div>
</div>
Ecco l'animazione.
.left.ng-enter,
.left.ng-leave {
-webkit-transition: all 1s ease-in-out;
}
.left.ng-enter {
transition-delay: 0.7s;
opacity: 0;
left: 10%;
}
.left.ng-enter-active {
opacity: 1;
left: 0;
}
.left.ng-leave {
opacity: 1;
left: -10%;
}
.left.ng-leave-active {
left: -20%;
opacity: 0;
}
Questa è una semplice applicazione che fa scorrere un elenco di numeri a sinistra ea destra.
Se si preme il pulsante sinistro, i numeri scorrono verso sinistra.
Se si preme il pulsante destro, i numeri scorrono verso destra.
Ma vediamo che se c'è un cambio di direzione, il numero scorrerà prima nella direzione sbagliata, e la direzione successiva sarà corretta.
Ho il sospetto che ciò sia dovuto alle condizioni della gara.
Infatti, vedo che ng-class
non viene applicato subito dopo aver modificato la direzione self.direction
utilizzando il debugger.
Questo è molto curioso.
C'è un modo per combattere questo?