Я написал часть веб-приложения в Angular. Чтобы гарантировать, что все маршруты охвачены, я хотел добавить свойство redirectTo
в $routeProvider
, так что неверные маршруты возвращаются в корень веб-приложения, которое не использует Angular.
Я пробовал:
$routeProvider.otherwise({
redirectTo: '/'
});
, но, очевидно, это только маршруты в угловом контролируемой части URL, так что пользователи будут перенаправляться на URL-адрес, как http://app.com/angular-part-of-web-app#
вместо http://app.com
, где я хотел их идти.
Я работал вокруг этого, имея пустой частичный, чтобы действовать как «404» страницы, а затем контроллер, который использует только $window
объект для перенаправления на нужную страницу:
routes.js
// Redirect to site list.
$routeProvider.when('/404', {
templateUrl: '/partials/404.html',
controller: 'RedirectCtrl'
});
// Redirect to the 404 page.
$routeProvider.otherwise({
redirectTo: '/404'
});
controllers.js
// Controller to redirect users to root page of site.
.controller('RedirectCtrl', ['$scope', '$window', function ($scope, $window) {
$window.location.href = '/';
}]);
Тем не менее, это означает, что «слишком хакерские, должно быть лучше» сигнальные колокола. Есть ли лучший способ сделать это в Angular?
EDIT: Angular routes - redirecting to an external site? не дал ответа на тот же вопрос. Я собираюсь оставить свой вопрос открытым, вместо того, чтобы пометить его как дубликат (пока), так как с тем, чтобы Угловой мир двигался так быстро, предыдущий ответ больше не может быть так.
Наверное, справитесь с этим на стороне сервера. – tymeJV
Я также хочу решить эту проблему. Я в процессе переключения моего приложения на Angular и некоторые части, которые все еще обслуживаются с сервера. Нужно найти способ подключения между угловой частью и неагрегатной частью. – Michael