私のアプリケーションでは、httoインターセプタを使用して一般的なhttpエラーを処理します。クライアントの側またはサーバーのどちらかにエラーがあることを意味するステータスコードを取得しますサイド私はイベントをブロードキャストし、私はイベントにサブスクライブされapp.runのハンドラ、 、
問題は$ http.successあるが常に実行されていると私は、コントローラのメソッドに
を続けて停止するような角度に伝えるカント以下はアプリの簡略版です
インターセプタ
angular.module('starter.Aop', [])
.factory('AuthInspector', ['$rootScope', '$injector', function AuthInspector($rootScope, $injector) {
var service = {
request: function (config) {
var authToken = window.localStorage.getItem('authToken')
config.headers.Authorization = 'Bearer ' + authToken;
return config
},
responseError: function (response) {
if (statusCode >= 400) {
$rootScope.$emit('someThingWrong')
event.preventDefault();
}
return response
}
};
return service;
}]);
app.run
.run(function ($timeout, $ionicPlatform, $rootScope, $state, $cordovaPushV5, $cordovaNetwork, $ionicPopup) {
$ionicPlatform.ready(function() {
$rootScope.$on('someThingWrong', function() {
console.log('someThingWrong')
event.preventDefault();
return;
})
コントローラ
$scope.logout = function() {
$http.post(serverConfig.serverUrl + "/api/account/logoutx").success(function (res) {
console.log('methode is successed')
//window.localStorage.removeItem('authToken');
//window.loclaStorage.removeItem('userFullName');
})
}
にconsole.logは( 'Methodeのがsuccessedれる')iは継続コントローラからの角度を停止する方法オールウェイズrunnign
あります方法 ?
が300を超えていても、エラーがあるわけではありません。 3xxコードはリダイレクト用です。 4xxと5xxはエラーです。そして彼らはネイティブに角を扱います。なぜ仕様に固執するのではなく、HTTPを再開発するのですか?適切なステータスコードを使用してエラーを通知します。 –
ok、whethere 300または=> 400 m問題は実行を処理する方法です – user6599525
達成したいことがわかりません。 Angularは既にエラー応答を処理しており、ステータスがエラーステータスの場合は**約束を拒否します**。 success()とerror()は長い間使用されなくなり、1.6の角度で削除されることに注意してください。 then()を使用します。 –