如何在全局$ 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
如何在成功之外访问响应? 有没有解决方案?
感谢。
答案 0 :(得分:0)
scope.data = $resource(...)
会在变量中存储一个承诺和最终结果(一旦收到)。
两个范围都是同一个对象。
$scope.data
为空的原因是因为请求是异步执行的。当您将值记录在success方法之外时,尚未返回请求。如果你想对数据做一些事情你必须在成功方法中做(如果你只是想显示它,角度应该工作正常)。尝试在您的html模板中添加{{ data }}
,看看如何填充数据。