Die App, an der ich arbeite, enthält verschiedene Status (mithilfe des UI-Routers). In einigen Status müssen Sie angemeldet sein, in anderen sind sie öffentlich verfügbar.
Ich habe eine Methode erstellt, die überprüft, ob ein Benutzer angemeldet ist. Derzeit habe ich Probleme damit, bei Bedarf tatsächlich auf unsere Anmeldeseite umzuleiten. Es ist zu beachten, dass die Anmeldeseite derzeit nicht in der AngularJS-App platziert ist.
app.run(function ($rootScope, $location, $window) {
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (toState.data.loginReq && !$rootScope.me.loggedIn) {
var landingUrl = $window.location.host + "/login";
console.log(landingUrl);
$window.open(landingUrl, "_self");
}
});
});
Das console.log zeigt die beabsichtigte URL korrekt an. In der Zeile danach habe ich praktisch alles von $ window.open bis window.location.href ausprobiert und egal was ich versucht habe, es findet keine Umleitung statt.
BEARBEITEN (BEHOBEN):
Fand das Problem.
var landingUrl = $window.location.host + "/login";
$window.open(landingUrl, "_self");
Die Variable landingUrl wurde auf 'domain.com/login' gesetzt, was mit $ window.location.href nicht funktionieren würde (was eines der Dinge war, die ich versucht habe). Allerdings nach dem Ändern des Codes auf
var landingUrl = "http://" + $window.location.host + "/login";
$window.location.href = landingUrl;
es funktioniert jetzt.
quelle
location
Objekt mit$window.location=...
Antworten:
Ich glaube, der Weg dazu ist
$location.url('/RouteTo/Login');
Aus Gründen der Übersichtlichkeit bearbeiten
Angenommen, meine Route für meine Anmeldeansicht war
/Login
, ich würde sagen$location.url('/Login')
, um zu dieser Route zu navigieren.Für Standorte außerhalb der Angular-App (dh keine Route definiert) wird einfaches altes JavaScript bereitgestellt:
quelle
$window
anstelle vonwindow
(Quelle: stackoverflow.com/questions/28906180/… )Es scheint, dass für das vollständige Laden
$window.location.href
der Seite der bevorzugte Weg ist.https://docs.angularjs.org/guide/$location
quelle
Es könnte dir helfen! Demo
AngularJs Codebeispiel
HTML-Codebeispiel
quelle
Ich bin mir nicht sicher ab welcher Version, aber ich verwende 1.3.14 und Sie können einfach Folgendes verwenden:
Keine Notwendigkeit zu injizieren
$location
oder$window
in den Controller und keine Notwendigkeit, die aktuelle Host-Adresse zu erhalten.quelle
Sie müssen sagen:
< html ng-app = "urlApp" ng-controller = "urlCtrl">
Auf diese Weise kann die Winkelfunktion auf ein "Fenster" -Objekt zugreifen
quelle