Javascript AngularJS:如何实现全局错误处理程序并显示错误
对于我的网页,我有几个angular应用程序。对于这些应用程序,我想创建一个全局错误处理程序,用于跟踪代码为500、401等的错误,并将其显示为警报 以下是我到目前为止的情况: 我已经创建了一个全局错误处理程序模块,然后将其注入到我的应用程序中Javascript AngularJS:如何实现全局错误处理程序并显示错误,javascript,angularjs,error-handling,Javascript,Angularjs,Error Handling,对于我的网页,我有几个angular应用程序。对于这些应用程序,我想创建一个全局错误处理程序,用于跟踪代码为500、401等的错误,并将其显示为警报 以下是我到目前为止的情况: 我已经创建了一个全局错误处理程序模块,然后将其注入到我的应用程序中 angular.module('globalErrorHandlerModule', []) .factory('myHttpInterceptor', ['$rootScope', '$q', function ($rootScope, $q)
angular.module('globalErrorHandlerModule', [])
.factory('myHttpInterceptor', ['$rootScope', '$q', function ($rootScope, $q) {
return {
'responseError': function (rejection) {
if(rejection.status == 500){
// show error
}
return $q.reject(rejection);
}
};
}])
.config(function ($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
});
angular.module('myApp', ['globalErrorHandlerModule'])
现在我正在努力解决的是在警报中显示错误。最好的方法是什么?我曾尝试创建一个单独的错误应用程序,注入错误模块,并在两者之间共享一个数据工厂,但应用程序中的数据从未更新。大概是这样的:
angular.module('globalErrorHandlerModule', [])
.factory('myHttpInterceptor', ['$rootScope', '$q', 'Data', function ($rootScope, $q, Data) {
return {
'responseError': function (rejection) {
if(rejection.status == 500){
// set error
Data.error.message = '500 error';
}
return $q.reject(rejection);
}
};
}])
.factory('Data', function () {
var _error = {
message: "init"
};
return {
error: _error
};
})
.config(function ($httpProvider) {
$httpProvider.interceptors.push('myHttpInterceptor');
});
angular.module('globalErrorHandlerApp', ['globalErrorHandlerModule'])
.controller('GlobalErrorCtrl', function ($scope, Data) {
$scope.test = Data.error.message;
});
然后显示错误,如下所示:
<div ng-controller="GlobalErrorCtrl">
Error {{test}}
</div>
但是如前所述,我只看到我的初始值,没有更新错误消息。我也试过广播,但也没用。我确信有更好的方法来实现这样的东西,我只是还没有找到。谢谢你给我指点方向。试试这个
angular.module('globalErrorHandlerApp', ['globalErrorHandlerModule'])
.controller('GlobalErrorCtrl', function ($scope, Data) {
$scope.test = Data.error;
});
看一个物体比看一根绳子好。
如果需要帮助,请告诉我
<div ng-controller="GlobalErrorCtrl">
Error <span> {{test.message}} </span>
</div>