Verwenden von $ routeProvider, um zu Routen außerhalb von Angular umzuleiten
Ich habe einen Teil einer Webanwendung in Angular geschrieben. Um sicherzustellen, dass alle Routen abgedeckt sind, wollte ich eine hinzufügenredirectTo
Eigentum an der$routeProvider
, damit ungültige Routen an das Stammverzeichnis der Webanwendung zurückgegeben werden, die Angular nicht verwendet.
Ich habe es versucht:
$routeProvider.otherwise({
redirectTo: '/'
});
Dies wird jedoch offensichtlich nur im von Angular kontrollierten Teil der URL weitergeleitet, sodass Benutzer zu einer URL wie der folgenden weitergeleitet werdenhttp://app.com/angular-part-of-web-app#
, anstatthttp://app.com
, wohin ich möchte, dass sie gehen.
Ich habe das umgangen, indem ich einen leeren Teil als '404'-Seite verwendet habe und dann einen Controller, der nur die$window
Objekt, um auf die gewünschte Seite umzuleiten:
routes.js
// Redirect to site list.
$routeProvider.when('/404', {
templateUrl: '/partials/404.html',
controller: 'RedirectCtrl'
});
// Redirect to the 404 page.
$routeProvider.otherwise({
redirectTo: '/404'
});
controller.js
// Controller to redirect users to root page of site.
.controller('RedirectCtrl', ['$scope', '$window', function ($scope, $window) {
$window.location.href = '/';
}]);
Dies löst jedoch die Alarmglocken „Too Hacky, muss ein besserer Weg sein“ aus. Gibt es eine bessere Möglichkeit, dies in Angular zu tun?
BEARBEITEN:Winkelrouten - Weiterleiten an einen externen Standort? gab keine Antwort auf die gleiche Frage. Ich werde meine Frage offen lassen, anstatt sie (vorerst) als Duplikat zu markieren, da sich die Angular-Welt so schnell bewegt, dass die vorherige Antwort möglicherweise nicht mehr der Fall ist.