2017-03-02 2 views
9

Alle unsere Inhaltsseiten haben einen bestimmten Header, X-Foo. Wenn sich der Inhalt von ng-view ändert, möchten wir den Header X-Foo der neuen Seite in einem anderen Element anzeigen. Wie können wir diesen Wert erhalten, wenn sich der Inhalt ändert?Header erhalten, wenn ng-view geändert wird

EDIT: Da dies scheinbar unklar war, wird der Header in der Antwort erwartet, nicht die Anfrage.

+0

Wenn der Inhalt ändert oder wenn die Route ändert? 'ngView' hat ein' $ viewContentLoaded' Event, an das Sie sich anschließen können. Alternativ gibt es das '$ routeChangeSuccess'-Ereignis, wenn Sie sich einhaken möchten, wenn sich die Route ändert. – Ankh

+0

@Ankh Eins ist in Ordnung. Ich nehme jedoch an, dass an dem Punkt, an dem sich die Route ändert, die neuen Daten noch nicht angekommen sind, so dass es keine Antwort gibt, um die Header zu erhalten. – user1207177

Antwort

0

Können Sie mit $ http auf die Header im Controller zugreifen? Ich habe nichts, was sich ändernde Header zur Verfügung stellt, um dies zu testen.

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

Alternativ kann, wenn das nicht funktioniert, Sie bei Verwendung http interceptors suchen möchten.

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

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

Sie können hierfür einen httpInterceptor verwenden. HTTP Abfangjäger sind eine gute Möglichkeit, das Verhalten in einem einzigen Ort zu definieren, wie eine Anforderung oder eine Antwort für alle HTTP-Aufrufe behandelt wird mit dem $ http Service

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; 
     } 
    }; 
}); 
Verwandte Themen