Super-einfache AngularJS App Ich versuche zu bauen, um Anmeldeinformationen in zwei Textfelder zu akzeptieren, dann verwenden Sie Zwei-Wege-Bindung umleiten auf eine Schaltfläche klicken Sie auf eine URL, die die beiden Variablen enthält.
Mein Problem ist, ich kann es für ein einfaches arbeiten
%Vor%(oder vielleicht ng-href = ...) Aber aus irgendeinem Grund, egal was ich mache, kann ich keine Umleitung mit einem
bekommen %Vor%Ich habe eine Menge Variationen ausprobiert, aber hier ist, was ich versuche zu tun
%Vor%Ich kann es funktionieren lassen, wenn ich eine Funktion in einem Controller anrufe, aber das ist so eine einfache Sache, ich würde es gerne auf der Seite machen, wenn möglich.
Auch, als eine Nebenfrage, was sind die Sicherheitsbedenken beim Anmelden in einer Website wie dieser?
** Edit: Der Teil, der mich verwirrt ist, funktioniert (nur ohne Zwei-Wege-Bindung funktioniert):
%Vor%Ich würde erwarten, dass das Ändern von onClick zu ng-click mir das gleiche Verhalten geben würde, aber mit bidirektionaler Bindung.
** Re-Edit / Lösung Okay, ich habe endlich eine brauchbare Lösung gefunden.
Ich habe KEINE Ahnung, warum das Button-Tag nicht funktioniert, um dieses Verhalten zu erzielen, wie oben erwähnt, aber hier ist der Arbeitscode.
%Vor%Indem ich ihm dieselbe Klasse gebe, die ich für die Schaltfläche verwenden wollte, sieht der Text genauso aus wie eine Schaltfläche.
Setzen Sie eine Methode auf Ihren Controller, um die Umleitung auszuführen, und rufen Sie die ng-click
auf Ihrer Schaltfläche auf.
Auszeichnung:
%Vor%Controller:
%Vor% Beachten Sie auch, dass Sie $location.url()
nicht path()
ODER ...
Fügen Sie $location
zu Ihrem Bereich hinzu und rufen Sie url({{newUrl}})
:
Ich würde immer noch mit dem Aufruf der Methode auf dem Zielfernrohr gehen.
Einige Dinge, die hier zu beachten sind:
$window.location.href = '/url'
für einen Inline-Ausdruck ng-click
zu verwenden, nicht. $location
wird nicht automatisch für Ihren Bereich verfügbar gemacht. Sie müssen dies der Ansicht zugänglich machen, indem Sie ihn zuerst auf den Controller und dann auf den Bereich injizieren.
.controller ('LoginCtrl', Funktion ($ scope, $ location) { $ scope. $ loc = $ location; })
Es ist erwähnenswert, dass $location.path()
& amp; $location.url()
leitet Sie NICHT auf eine neue Seite um, dies wird für das Routing verwendet, so dass Routenrückrufe / -beobachter es tun können. Mit dem $ location-Dienst können Sie nur die URL ändern. Sie können die Seite nicht erneut laden.
Der beste (und auch eckige Weg imo) ist das Hinzufügen einer Methode zu Ihrem Oszilloskop im Controller. Wenn Sie die URL ändern und die Seite neu laden oder zu einer anderen Seite navigieren müssen, verwenden Sie eine API auf niedrigerer Ebene: $window.location.href
.
Verwenden Sie eine Methode, die an Ihren Controller gebunden ist:
%Vor% Und dann rufen Sie Ihre Methode von Ihrem ng-click
Ausdruck:
<button ng-click="redirect('/')">GO HOME! NO BODY LOVES YOU</button>
Hinweis: Bei der obigen Methode müssen Sie sowohl $location
& amp; $window
an Ihren Controller.
Tags und Links javascript angularjs