ich mit ng-class
einig seltsamen Problem habe, und ich bin zu ahnen, dass es mit Race-Bedingung zu tun hat.Race Condition mit ng-Klasse und Animation
Hier ist Plunker example
Hier ist der Code js relevant ist
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);
}
}
Hier ist der relevante html
<div class="stuff-wrapper">
<div class="stuff"
ng-class="bCtrl.directionClass()"
ng-repeat="stuff in bCtrl.display_list">
{{stuff}}
</div>
</div>
Hier ist die Animation.
.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;
}
Dies ist eine einfache App, die eine Liste von Nummer links und rechts schieben.
Wenn die linke Taste gedrückt wird, gleiten die Zahlen nach links.
Wenn die rechte Taste gedrückt wird, gleiten die Zahlen nach rechts.
Aber wir sehen, dass, wenn es zu einer Änderung der Richtung ist, wird die Zahl zuerst in der falschen Richtung verschoben werden, und die nachfolgende Richtung korrekt.
Ich vermutete, dass dies auf Race-Zustand zurückzuführen ist.
In der Tat sehe ich, dass ng-class
wird nicht direkt nach dem Ändern der Richtung self.direction
mit dem Debugger angewendet werden.
Dies ist sehr neugierig.
Gibt es eine Möglichkeit, dies zu bekämpfen?