2017-03-02 1 views
9

Toutes nos pages de contenu ont un en-tête particulier, X-Foo. Lorsque le contenu du ng-view change, nous voulons afficher l'en-tête X-Foo de la nouvelle page dans un élément différent. Comment pouvons-nous obtenir cette valeur chaque fois que le contenu change?Récupère les en-têtes lors des changements ng-view

EDIT: Comme cela n'était apparemment pas clair, l'en-tête est attendu dans la réponse , pas la demande.

+0

Lorsque les changements de contenu ou lorsque les changements d'itinéraire? 'ngView' a un événement' $ viewContentLoaded' sur lequel vous pouvez vous accrocher. Sinon, il y a l'événement '$ routeChangeSuccess' si vous voulez vous connecter lorsque l'itinéraire change. – Ankh

+0

@Ankh Soit l'un est bien. Cependant, je suppose que, au moment où l'itinéraire change, les nouvelles données ne sont pas encore arrivées, donc il n'y a pas de réponse à partir de laquelle obtenir les en-têtes. – user1207177

Répondre

0

Pouvez-vous accéder aux en-têtes du contrôleur avec $ http? Je n'ai rien qui a des en-têtes changeants facilement disponibles pour tester cela avec.

controller('SampleCtrl', function($http, $scope) { 
    // Add headers from $http 
    $scope.http = $http.defaults.headers.common; 
}); 

Par ailleurs, si cela ne fonctionne pas, vous pouvez regarder à l'aide http interceptors.

.config(function($routeProvider, $locationProvider, $httpProvider) { 

    $httpProvider.interceptors.push(function($q) { 
     return { 
      'response': function(response) { 
       // do something on success 
       console.log(response); 
       return response; 
      } 
     }; 
    }); 
} 
4

Vous pouvez utiliser un httpInterceptor pour cela. intercepteurs HTTP sont une excellente façon de définir le comportement dans un lieu unique pour la façon dont une demande ou une réponse est gérée pour tous les appels HTTP en utilisant le service http $

app.config(function ($httpProvider) { 
    $httpProvider.interceptors.push('httpInterceptor'); 
}).factory('httpInterceptor', function (liveInterviewConfiguration) { 
    return { 
     request : function (request) { 
      console.info("Your request headers are"); 
      console.info(request.headers); 
      return request; 
     }, 
     requestError : function (error) { 
      return error; 
     }, 
     response : function (response) { 
      return response; 
     }, 
     responseError : function (error) { 
      return error; 
     } 
    }; 
});