得到"最初加载" (不是AJAX调用)使用AngularJS的响应标头

时间:2017-08-05 19:28:55

标签: angularjs http response httpresponse

在查看 How to read response headers in angularjs? 时,我看到的答案涉及在页面加载之后发出http / ajax请求然后获取响应标头。

我有一个angularJS应用程序需要使用我在python后端添加的自定义响应标头键中的一些JSON来呈现页面(在加载时立即呈现)。

有非hacky这样做的方法吗?或者是尝试使用AngularJS渲染网页来解析响应标头本身就是黑客攻击?

我的标题看起来像这样(我试图获得myjson):

Keep-Alive:timeout=1, max=100
myjson:{"key2": "value2", "key1": "value1"}
Server:Apache

1 个答案:

答案 0 :(得分:0)

认为这是您的目标,使用$ http和ngRoute。如果我误解了,请原谅我。它只是通过SO的API加载有关此问题的数据。如果单击“加载数据”,您将在该页面上看到来自SO的标题。

var app = angular.module('plunker',['ngRoute']);

app.config(['$routeProvider',
  function($routeProvider) {
    $routeProvider.
      when('/home', {
        template: '<h1>Test 1</h1>',
        controller: 'HomeCtrl'
      }).
      when('/loaddata', {
        templateUrl: 'load_data.html',
        controller: 'LoadDataCtrl',
        resolve: {
          stackQuestion: function($http){
            // We must return something with a promise. $http already does that, so does $resource.
            // See: https://docs.angularjs.org/api/ng/service/$q
            return $http({
              method: 'GET',
              url: 'https://api.stackexchange.com/2.2/questions/37491743?order=desc&sort=activity&site=stackoverflow'
            })
          }
        }
      }).
      otherwise({
        redirectTo: '/home'
      })
  }
]);

然后,在你的控制器中:

app.controller('LoadDataCtrl',function(stackQuestion,$scope){

  // now our data is here
  $scope.question = stackQuestion.data;
  $scope.headers = stackQuestion.headers();

});

http://plnkr.co/edit/ylOfSNqPAqjdg9rYxsbb?p=preview