2017-09-07 2 views
2

Ich verwende ein Datepicker-Steuerelement auf meiner Seite, das über ng-if gerendert wird, wenn es von einem bestimmten Dropdown-Wert abhängt.AngularJS ng-if und DOM-Kompilierung

Das Problem, mit dem ich konfrontiert bin, ist, dass zum Zeitpunkt des Renderns, dass datepicker Eingabe ist nicht Teil von DOM, so dass später, wenn ich den Wert von Dropdown ändern, das Datepicker-Steuerelement nicht funktioniert.

Wenn ich ng-show verwende, stoße ich auf Validierungen.

Irgendwelche Vorschläge?

Danke.

+0

Welchen Datypicker benutzen Sie oder ist er selbst gemacht? Und hast du versucht, die ControllerAs Syntax zu verwenden? – MrWook

Antwort

0

Verwenden ng-show/ng-hide anstelle von ng-if, weil die ng-if Richtlinie entfernt oder neu erstellt, einen Teil des Baums DOM auf einem Ausdruck basiert. Wenn der ng-if zugewiesene Ausdruck zu einem falschen Wert ausgewertet wird, wird das Element aus dem DOM entfernt, andernfalls wird ein Klon des Elements wieder in das DOM eingefügt.

Weitere Details. Bitte beachten Sie diesen Link: what is the difference between ng-if and ng-show/ng-hide

+0

Im Falle von ng-show/hide muss ich Validierungen manuell durchführen, oder? –

+0

@ AliHassan Nein. 'ng-show' funktioniert auch als' ng-if'. Sie setzen einfach den Ausdruck, den Sie erwähnt haben, in den Ausdruck "ng-if". –

+0

Danke Ramesh, lass es mich anschauen. –

0

Versuchen Sie "$ scope.apply()" nach dem Umschalten der ng-if-Variable.