我有一个工厂生成多个API调用绑定到单个promise,当我将promise返回给我的控制器时,无法从控制器中的函数返回的对象中获取数据。
代码:
厂:
app.factory('factory1',function($http,$q){
var formData = {}
var URL = "/xxx/"
var dataToPass = {}
formData.getData = function()
{
var data1 = $http.get(URL+'api1/')
var data2 = $http.get(URL+'api2/')
return $q.all({'data1':data1,'data2':data2})
}
return formData
});
控制器:
app.controller('controller1', function($scope, factory1) {
$scope.uacForm =factory1.getData().then(function(data, status, headers, config)
{
console.log(data['data2'])
},
function(data, status, headers, config)
{
alert("Error")
})
console.log($scope.uacForm)
});
无法从$ scope.uacForm对象获取数据。
答案 0 :(得分:2)
$scope.uacForm
只是你的承诺,而不是实际价值。当promise被解析为能够从视图中到达时,您需要将数据放在范围内的某个位置。即
factory1.getData().then(function(data, status, headers, config)
{
$scope.uacForm = data.data2;
console.log($scope.uacForm)
},
function(data, status, headers, config)
{
alert("Error")
})