Angularjs ng-show basierend auf Callback

8

Ich bin neu in eckigen, vielleicht fehlt mir etwas.

Auf meinem Anmeldeformular brauche ich einen Standort vom Benutzer. Je nachdem, ob sie navigator.geolocation zulassen / unterstützen, möchte ich ein Drop-Down-Menü anzeigen, um einen Standort auszuwählen.

Controller.

%Vor%

und mein Formular:

%Vor%

Dieser Ansatz funktioniert nicht für mich. Jede Einsicht wäre willkommen.

    
Maleck13 29.12.2012, 19:00
quelle

1 Antwort

14

Immer wenn Sie eine Operation außerhalb von angularjs ausführen, wie zB einen Ajax-Aufruf mit jquery oder den geolocation wie in diesem Beispiel, müssen Sie angular wissen lassen, dass sie sich selbst aktualisiert. Ich schaute auf deine Finger und änderte etwas von deinem Code, um so auszusehen:

%Vor%

Und jetzt ändert sich showLoc beim Update in true. Hier ist die Dokumentation zur Verwendung der $ apply () Methode Ссылка

jsFiddle Ссылка

Bearbeiten: Meine Antwort wurde bearbeitet, aber ich stimme der Bearbeitung nicht zu . Während du die $ apply-Methode um $ scope.showLoc = false wickeln kannst, um sie "kürzer" zu machen, speicherst du wirklich nur 1 Zeichen (den Semikolon). Außerdem mag ich die $ apply-Methode nach einer Reihe von Logik, anstatt alles darin zu verpacken. Wenn es noch mehr Dinge gäbe, die ich mit dem Scope machen würde, müßte man entweder jede weitere wie folgt schreiben:

%Vor%

Was ich übermäßig finde, oder Sie könnten die Funktionsmethode verwenden:

%Vor%

Oder direkt nach dem Code, der "anwenden" benötigt:

%Vor%

Indem Sie diese Methode die ganze Zeit machen, ist Ihr Code leicht übertragbar und sehr lesbar. Auch weniger Linien sind nicht immer die beste Methode.

    
Mathew Berg 29.12.2012, 21:02
quelle

Tags und Links