Eckiges Routing, ohne den Standort zu ändern

8

Chrome Packaged Apps haben eine ziemlich strenge Inhaltssicherheitsrichtlinie. Ein Ergebnis davon ist, dass die Manipulation des Ortes (wie das Klicken auf einen Link) zu folgendem führt:

%Vor%

Target _blank öffnet den Link in Chrome, was ich nicht möchte. Kann das AngularJS-Routing in einer solchen gesperrten Umgebung funktionieren?

Sie geben ein Beispiel einer Angular-App, verwenden aber auffällig kein Routing.

Aktualisieren

Hier ist der Link, der beim Anklicken den Fehler: <a class='walrus-link' ng-href='paystubs/{{walrus.id}}'>Walrus {{id}}!</a>

liefert     
Chris 13.03.2013, 17:37
quelle

2 Antworten

8

Anstatt einen href zu verwenden, versuchen Sie es mit ng-click und rufen Sie eine Methode für Ihren Controller auf, die mit $ location zur entsprechenden Seite wechselt. Siehe die Dokumentation auf der AngularJS-Site . Das folgende Zitat aus dem Dokument gibt einen Hinweis darauf, dass der $ location Service für Sie geeignet sein könnte:

  

Wann sollte ich $ location verwenden? Jederzeit, wenn Ihre Anwendung reagieren muss   zu einer Änderung der aktuellen URL oder wenn Sie die aktuelle ändern möchten   URL im Browser.

Ihr Code könnte etwa so aussehen:

%Vor%

und in Ihrem übergeordneten Controller benötigen Sie eine Scope-Methode namens "getPaystub" mit einer ähnlichen Zeile wie:

%Vor%

Auf diese Weise behält eckig die Kontrolle und verursacht keine Seitenaktualisierung. Dies hält Sie hoffentlich innerhalb der Grenzen des CSP. Leider kann ich das nicht in einer gepackten App testen, aber ich habe genau die gleiche Konvention in einer Web-App verwendet und es funktioniert einfach nur gut.

    
eterps 14.03.2013, 02:28
quelle
0

routing funktioniert für mich in meiner Chrome-App, wenn Sie nicht den HTML5-Modus von $ routeProvider verwenden (der standardmäßig deaktiviert ist), Sie müssen lediglich einen Hash in der URL verwenden.

so meine Links sehen so aus:

%Vor%

$ routeProvider-Konfiguration lautet wie folgt:

%Vor%     
schellmax 28.05.2015 19:14
quelle