Angulaire des routes de la redirection vers un site externe?
Dans un AngularJS fichier de routes il y a l'option pour une otherwise
route, le remplacement d'une 404:
$routeProvider
.when(...)
.otherwise({
redirectTo: 'my/path'
});
Est-il un moyen de le faire, tels que le contraire redirige vers une page qui n'est pas dans l'application? J'ai essayé
$routeProvider
.when(...)
.otherwise({
redirectTo: 'http://example.com'
});
mais ce juste essayé de rediriger vers ce chemin d'accès dans mon application, qui n'existe pas. La solution que je connaisse est de le faire en manuel redirection dans un $scope.$on('$routeChangeStart')
dans un haut-contrôleur de niveau, mais c'est beaucoup de duplication de code (et c'est moche). Est-il un meilleur moyen?
OriginalL'auteur jclancy | 2013-08-08
Vous devez vous connecter pour publier un commentaire.
À mon connaissances, ce n'est pas possible, comme le
routeProvider
gère les parcours internes seulement.Ce que vous pouvez faire est
puis il suffit d'utiliser
window.location.href = 'http://yourExternalSite.com/404.html'
dans le contrôleur.OriginalL'auteur Florian
Dans mon cas, cela a fonctionné pour moi:
OriginalL'auteur Eric
Il suffit de prendre un coup d'oeil à angular.js lien de comportement désactiver les liens profonds pour des Url spécifiques
et utiliser ce
OriginalL'auteur Ebrahim
Je ne recommande pas seulement à l'aide de la fenêtre.emplacement.href dans le nouveau contrôleur comme indiqué dans d'autres répondre car la ngRoute aurait réglé l'histoire de pointer à la page inexistante (donc quand l'utilisateur clique sur le dos, il va garder la redirection vers la page 404). J'ai essayé et cela a échoué.
Je voudrais vous montrer ma solution liée à l'autre DONC, la question ici:
https://stackoverflow.com/a/27938693/1863794
Je l'ai adopté et appliqué à votre scénario. Je ne pense pas que c'est mauvais d'une idée pour utiliser
MainCtrl
à l'extérieur de la ng-car il va être déclaré seulement une fois, sauf si vous avez des calques imbriqués de ng-view... je ne vois pas de duplication de code, vous pouvez placer MainCtrl dans un module séparé si cela vous dérange beaucoup:Acclamations
OriginalL'auteur jltwoo