Umleiten mit ng-click

7

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.

    
Red-Beard 24.07.2014, 17:33
quelle

3 Antworten

11

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()

aufrufen möchten

ODER ...

Fügen Sie $location zu Ihrem Bereich hinzu und rufen Sie url({{newUrl}}) :

auf %Vor%

Ich würde immer noch mit dem Aufruf der Methode auf dem Zielfernrohr gehen.

    
craigb 24.07.2014, 18:11
quelle
9

Einige Dinge, die hier zu beachten sind:

  1. Das Verweisen auf das Fenster in Angular-Ausdrücken ist nicht erlaubt! Daher funktioniert der Versuch, $window.location.href = '/url' für einen Inline-Ausdruck ng-click zu verwenden, nicht.
  2. $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; })

  3. 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.

  4. 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.

    
Shannon Hochkins 26.07.2015 22:45
quelle
2

Sie können auch ng-href verwenden.

%Vor%     
user2909250 21.09.2015 23:18
quelle

Tags und Links