Я новичок в AngularJs. У меня есть одностраничное приложение с настройками маршрутов с контроллером и представлением. Вид загружается внутри элемента <ng-view></ng-view>
страницы index.html
. Внутри контроллера я делаю вызов http
для получения данных и привязки данных к $scope
. Для сценариев успеха это отлично работает, но если есть ошибка, как подключить другое представление вместо представления по умолчанию, настроенного внутри маршрута angular. PLease дайте мне знать.
Перенаправление на страницу ошибок в Angularjs
Ответ 1
Используйте $location.url()
для перенаправления на 404.html при возникновении ошибки
$http.get(url,[params])
.success(function(data, status, headers, config){
// bind your data to scope
})
.error(function(data, status, headers, config) {
$location.url('/404');
});
Затем настройте свой $routeProvider
$routeProvider
.when('/404', {
templateUrl: '404.html',
controller: 'Four04Controller'
})
Ответ 2
Чтобы реализовать общий сценарий для обработки ошибок ajax, вы можете реализовать пользовательский запрос-перехватчик и перенаправить пользователя на страницу с ошибкой (или страницу входа) в соответствии с состоянием ошибки:
myApp.factory('httpErrorResponseInterceptor', ['$q', '$location',
function($q, $location) {
return {
response: function(responseData) {
return responseData;
},
responseError: function error(response) {
switch (response.status) {
case 401:
$location.path('/login');
break;
case 404:
$location.path('/404');
break;
default:
$location.path('/error');
}
return $q.reject(response);
}
};
}
]);
//Http Intercpetor to check auth failures for xhr requests
myApp.config(['$httpProvider',
function($httpProvider) {
$httpProvider.interceptors.push('httpErrorResponseInterceptor');
}
]);
Ответ 3
вы можете использовать: https://github.com/angular-ui/ui-router В случае ошибки вы можете вызвать состояние "ошибка". У меня была та же проблема несколько недель назад, и я решил таким образом
Ответ 4
Если вы используете $stateProvider вместо $routeProvider, вы можете сделать это следующим образом:
function routerConfig($stateProvider, $urlRouterProvider) {
$stateProvider
.state('404', {
url: '/404',
templateUrl: '404.html'
})
.state('home', {
url: '/',
templateUrl: 'home.html'
});
$urlRouterProvider.otherwise('/404');
}
Обратите внимание на $urlRouterProvider.otherwise(url), который является функцией, которая вызывается, когда провайдер не находит запрошенный URL-адрес, поэтому он автоматически перенаправляет URL-адрес, указанный в этой функции.