AngularJS: Рекомендация о рендеринге другого вида при HTTP 404
Что я делаю
Я пытаюсь создать сервис, который загружает бюджеты пользователей на текущий месяц. Код выглядит так
$scope.thisMonthBudgetSummary = function () { console.log("получение сводки бюджета");
var date = new Date(); BudgetSummary.get({'month': date.getMonth() + 1, 'year': date.getFullYear()}, function () { // success }, function (error) { //error console.log('error:', error.status); }) };
проблема
- Я хочу сделать другое представление на одной странице, когда HTTP-ответ 404
Какая рекомендация по этому поводу? я сбит с толку
- Я считаю, что не очень хорошая идея жестко кодировать имя шаблона в контроллере
2 ответа
Если вам нужна функциональность по умолчанию для вашего приложения, ответ @Mohammad Sepahvand сработает. Если вы просто хотите получить разовый запрос, вы можете сделать:
var date = new Date();
BudgetSummary.get({'month': date.getMonth() + 1, 'year': date.getFullYear()},
function (data, status, headers, config) {
//check your status here-->
if (status === '200'){
$location.path('/path/to/other/route');
}
},
function (data, status, headers, config){
//check your status here-->
if (status === '404'){
$location.path('/path/to/other/route');
}
})
};
$http
Перехватчик, безусловно, один из способов, в конфигурации вашего приложения вы можете сделать:
$httpProvider.interceptors.push(['$q', '$location', function ($q, $location) {
return {
'request': function (config) {
return config || $q.when(config);
},
'requestError': function (rejection) {
return $q.reject(rejection);
},
'response': function (response) {
return response || $q.when(response);
},
'responseError': function (rejection) {
if (rejection.status == "404") {
$location.path("/yourErrorRoute")
}
return $q.reject(rejection);
}
};
}])