如何在成功之外访问http响应?

时间:2014-12-08 12:17:42

标签: angularjs

如何在全局$ scope变量中存储$ http响应?

$scope.data = [];
 $http({
     method: 'POST',
     url: '/generateId',
     headers: {
         'Content-Type': 'multipart/form-data'
     },
     data: {
         name: 'userid'
     },
     transformRequest: function(data, headersGetter) {
         var formData = new FormData();
         angular.forEach(data, function(value, key) {
             formData.append(key, value);
         });
         var headers = headersGetter();
         delete headers['Content-Type'];
         return formData;
     }
 }).
 success(function(data, status, headers, config) {
     $scope.data = data;
     console.log('$scope.data in success-->', $scope.data);//data is coming
 }).
 error(function(data, status, headers, config) {
     console.log('id is failed');
 });
 console.log('$scope.data outside-->', $scope.data);//empty array is coming

如何在成功之外访问响应? 有没有解决方案?

感谢。

1 个答案:

答案 0 :(得分:0)

scope.data = $resource(...)会在变量中存储一个承诺和最终结果(一旦收到)。

两个范围都是同一个对象。

$scope.data为空的原因是因为请求是异步执行的。当您将值记录在success方法之外时,尚未返回请求。如果你想对数据做一些事情你必须在成功方法中做(如果你只是想显示它,角度应该工作正常)。尝试在您的html模板中添加{{ data }},看看如何填充数据。