나는 모든 ajax 호출에서 사용하는 $ http에 대한 일반적인 호출을 포함하는 서비스를 가지고 있습니다. 여기서 상태 코드 결과가 리디렉션되는 "중앙 집중식"오류 처리 기능이 있습니다.AngularJS 다른 장소에서 다른 오류 코드를 처리하십시오.
"FieldsSync"서비스 :
return $http({
method: 'POST',
url: url,
data: $.extend(defaultPostData, postData)
}).error(function(data, status) {
switch (status) {
case 401: // "Unauthorized". Not logged in.
redirect.toLoginPage();
break;
case 403: // "Forbidden". Role has changed.
redirect.toLogoutPage();
break;
}
});
결과를해야 오류를 처리 할 수 이상의 오류 콜백를 연결하는 내가 항상 할 수 있도록 지연 개체를 반환 컨트롤러에서 서비스 기능 중 하나를 호출 사용자에게 어떤 종류의 피드백이 있습니다.
컨트롤러 :
fieldsSync.createField(newField).success(function(data) {
...
}).error(function(data, status) {
switch (status) { // <--- DO NOT WANT
case 401:
case 403:
return; // These errors are handled (=redirects) in the generic error callback and we don't want to show do anything while it redirects.
}
... // "Individual" error handling. =Displaying messages and stuff
});
그러나 리디렉션 내가 상태 코드가 이미 처리 된 경우 오류 콜백을 종료 할 필요가 발생하기 전에 오류 메시지가 팝업 싶지 않기 때문에.
질문 : 컨트롤러의 스위치 케이스를 제거하려면 어떻게합니까? 특정 오류 코드가 처리되었을 때 오류 콜백 체인을 종료 할 수 있습니까? 또는 덜 우스운 방법으로이 문제를 해결할 수 있습니까? :)
이것은 내게있어서 다시 발생하는 문제이며, 내 마음이 고착 된 것 같습니다.
$ http 또는 $ q에서 문서를 확인하고 이에 대한 예쁜 해결책을 찾았습니다.
왜 당신이 원하는 할 수 원하는 방식을 개선 할 수 있습니다 그렇게하려면 누군가가 특정 오류 상태를 다시 처리하고 싶다면 –
리디렉션이 발생하고있어 몇 밀리 초 동안 팝업이 표시되고 사라지는 경우 매우 좋지 않습니다. 나는 401과 다른 리디렉션을하는 지점을 보지 못합니다. –