2016-03-31 7 views
0

In letzter Zeit habe ich ein ziemlich signifikantes Problem mit ng-view und ng-if.Schließen Sie ein Dropdown mit zwei Elementen (element one und element two). Die beiden Elemente ändern eine Eigenschaft auf rootScope .AngularJS - DOM-Elemente flackern

Ich habe zwei weitere Artikel an einem anderen Ort (Div-Container, Container eins und zwei Container). Diese werden von ng-show angezeigt - Container eins bei Element eins und Container bei Element zwei.

Sobald ich einmal auf das eine Element klicke und sich die Eigenschaft des rootScope ändert und dann die Seite neu lade, werden die beiden Container abwechselnd angezeigt, ohne dass ich etwas mache.

Ich habe mehrere Beobachter, mehrere ng-Umhänge und verwenden Sie das Routing mit ng-view. Ich möchte auch erwähnen, dass die Anwendung relativ groß ist. Meistens tritt das Problem auf Android auf, vermutlich auf iOS.

+0

Willkommen bei StackOverflow! Können Sie ein minimales Beispiel Ihres Codes posten, der das Problem veranschaulicht? Es ist viel einfacher, Code zu debuggen, der gesehen werden kann. – gariepy

Antwort

0

Sobald ich das ein Mal ein Element klicken und das Eigentum der rootScope Änderungen und dann neu zu laden ich die Seite, die beiden Behälter werden abwechselnd ohne dass ich etwas tun angezeigt.

Meinst du, dass die anderen zwei Container nur für eine Sekunde auftauchen und dann verschwinden? Wenn das der Fall ist, dann denke ich, dass die Bedingung, die Sie innerhalb ng-showtrue zur Ladezeit bereitstellen, so dass sie für eine Weile erscheinen, bevor sich die Bedingung ändert und sie dann verschwinden.

Sie müssen sicherstellen, dass die Bedingung für ng-show anfänglich false ist.

+0

scope-property: "Wert". Container1 wird angezeigt, wenn "Wert" falsch ist. Container2 wird angezeigt, wenn "Wert" wahr ist. "Wert" ist anfänglich falsch. Daher wird container1 zunächst angezeigt. Wenn ich den "Wert" auf "wahr" ändere, wird container1 ausgeblendet und container2 angezeigt. Die "Werte" werden in einem Cookie gespeichert - nennen Sie es "c_value". Nachdem die Seite geladen wurde, überprüfe ich, ob es einen Cookie namens "c_value" gibt und überprüfe, ob es "wahr" ist (hier String) und der Boolesche Wert "Wert" füllt. Nachdem ich die Seite neu geladen habe, ändert sich der "Wert" in "wahr" (Ursache des Cookies), wechselt dann zurück in "falsch" und wechselt zurück in "wahr" und so weiter. – Heddy

+0

Sie sagen also, dass der Wert umschaltet ** nachdem ** Sie den Anfangswert von Cookie gesetzt haben? – Roy

+0

Korrigieren. Aber ich denke, ich habe die Lösung gefunden: Ich habe "$ Timeout" sehr oft verwendet, um die Ansicht zu aktualisieren, wahrscheinlich zu oft, denke ich. Nachdem ich viele Artikel gelesen habe, benutze ich es nur, wenn ich eine jQuery-Animation mit einer "Complete-Funktion" o.ä. machen will, wegen der Aktualisierung von Scope-Eigenschaften außerhalb der "eckigen Umgebung". trotzdem danke für Ihre Mühe – Heddy