angulaire.js - Comment configurer l'intercepteur d'Angular dans tous les modules du projet ?
为情所困
为情所困 2017-05-15 17:13:04
0
1
654
  • Je souhaite gérer uniformément les codes d'erreur de requête $http d'Angular (par exemple, lorsque l'utilisateur n'est pas connecté, accédez à la page de connexion)

  • Les cas sur Internet concernant l'intercepteur $httpProvider sont tous configurés dans un module.config spécifique (s'il y a plusieurs modules dans le projet, ne faut-il pas les configurer un par un ?)

  • Actuellement, la structure du code de mon projet est qu'un fichier JS définit un module, et le module principal dépend de ces sous-modules. Vous voulez savoir comment configurer le traitement d’interception de code d’erreur $http sur tous les modules ?

//依赖的业务模块
var SERVICE_DEPENDENCIES = ['module1','module2'];
//依赖的公共组件模块
var COMMON_DEPENDENCIES = ['ui.router','ngCookies','ngAnimate','toastr'];
//声明主模块:并合并和引入相关模块
var mainApp = angular.module('mainApp', COMMON_DEPENDENCIES.concat(SERVICE_DEPENDENCIES));

//主模块配置
mainApp.config(['$httpProvider',function($httpProvider){
  //为http添加过滤器
  $httpProvider.interceptors.push('myHttpInterceptor');
}]);

//过滤器定义
mainApp.factory('myHttpInterceptor',function($q){
  return {
    'response' : function(_response){
      if(_response.data.errorCode == 1){
        console.info("myHttpInterceptor response:" + JSON.stringify(_response));    
      }
      return _response;
    }
  }
});
  • Les filtres définis en mainApp ne sont pas applicables aux sous-modules module1 et module2. Comment le configurer dans tous les modules ?

为情所困
为情所困

répondre à tous(1)
黄舟

Merci pour l'invitation.

Il est donc clair que le $httpProvider défini par le mainApp principal est également applicable aux autres sous-modules dont vous dépendez. mainApp 定义的 $httpProvider 对你所依赖的其他子模块下同样适用

你的代码看起来没有什么任何问题,但我们项目中的确是不同模块中是相适用主模块的。唯一不同的好像在模块名上面。

像我们模块名都是这样的命名规则:

  • 主模块 ent

  • 业务模块 ent.user

    Il ne semble pas y avoir de problème avec votre code, mais dans notre projet, il est vrai que différents modules utilisent le même module principal. La seule différence semble être le nom du module.
Nos noms de modules suivent tous cette règle de dénomination :

  • Module principal ent. 🎜🎜
  • 🎜Module métier ent.user. 🎜🎜 🎜 🎜De même, je ne sais pas si c'est la raison ! 🎜
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal