AngularJS:在控制器中获取工厂返回的数据

时间:2014-12-17 10:00:07

标签: javascript angularjs angularjs-factory

我有一个工厂生成多个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对象获取数据。

1 个答案:

答案 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")
})