AngularJS - Erlaubnisanweisung

9

Ich versuche, directive zu schreiben, dass Benutzerberechtigungen auswertet .

Falls der Benutzer den angegebenen Inhalt nicht sehen darf

  1. Der Inhalt wird nicht angezeigt (fertig, funktioniert gut)

  2. Anfragen von Controllern innerhalb der Berechtigungsanweisung werden nicht angezeigt gefeuert.

Beispiel:

Controller:

%Vor%

Berechtigungsrichtlinie:

%Vor%

Alles zusammen:

%Vor%

Diese Version entfernt Elemente aus dem DOM, aber die Anforderung in MyController wird weiterhin ausgeführt. Natürlich kann ich in MyController nach Berechtigungen suchen, aber ich möchte nicht.

Danke für die Hilfe.

    
klesta 12.03.2013, 13:45
quelle

3 Antworten

1

Ich habe einen anderen Ansatz versucht und das Entfernen des Elements in die Kompilierfunktion eingefügt. Laut Protokoll wird es vor dem Controller ausgeführt, also ist es der richtige Ort. Jedenfalls wurde die Anfrage immer noch gefeuert. Also habe ich gerade versucht wie ein Blind Shot Element Kinder zu entfernen (ich weiß, es macht keinen Sinn, Entfernung von Element sollte ausreichen und sollte auch Kinder entfernen).

Aber es hat funktioniert!

compile: function(element) { var children = element.children(); children.remove(); element.remove(); }

Es funktioniert, aber ich bin mir nicht sicher, wie gut es ist (z. B. zukünftige Version Ang.)

    
klesta 22.04.2013, 06:47
quelle
1

Ihr Problem ist, dass der Controller immer aufgerufen wird, bevor die Link-Funktion ausgeführt wird. Siehe diese Geige .

%Vor%

Protokoll zeigt:

%Vor%     
Mark Rajcok 12.03.2013 14:42
quelle
-1

Wenn ich Sie wäre, würde ich einen Anruf beim Server machen und prüfen, ob sie für den Zugriff autorisiert sind.

Dies mit einer Direktive zu tun, macht keinen Sinn.

Direktiven sind in der Regel für die Manipulation von dom und dies ist Autorisierungsbestätigung sollte in der Regel in der Steuerung behandelt werden und dann das Ergebnis davon auslösen ein Ereignis.

Dann sollte Ihre Direktive auf dieses Ereignis warten und das Dom manipulieren, wenn sie Zugriff vom Server haben.

Sonst könnte jeder einfach was Sie wollen injizieren und Ihr Admin-Panel sehen.

Wenn Sie nicht sicher sind, was ich meine, lassen Sie mich wissen, dass ich die Antwort erweitern kann, wenn Sie mich brauchen.

    
Ray Garner 12.03.2013 14:39
quelle