Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:在控制器中获取工厂返回的数据_Javascript_Angularjs_Angularjs Factory - Fatal编程技术网

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

Javascript AngularJS:在控制器中获取工厂返回的数据,javascript,angularjs,angularjs-factory,Javascript,Angularjs,Angularjs Factory,我有一个工厂,它进行多个API调用,这些调用绑定到一个承诺,当我将承诺返回给我的控制器时,我无法从控制器中的函数返回的对象获取数据 代码: 工厂: app.factory('factory1',function($http,$q){ var formData = {} var URL = "/xxx/" var dataToPass = {} formData.getData = function() { var data1 = $http.get(URL+'api1/')

我有一个工厂,它进行多个API调用,这些调用绑定到一个承诺,当我将承诺返回给我的控制器时,我无法从控制器中的函数返回的对象获取数据

代码:

工厂:

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对象获取数据。

$scope.uacForm将只是您的承诺,而不是实际值。当承诺被解析为能够从视图访问时,您需要将数据放在作用域的某个位置。即

factory1.getData().then(function(data, status, headers, config)
{
    $scope.uacForm = data.data2;
    console.log($scope.uacForm)
},
function(data, status, headers, config)
{
    alert("Error")
})

谢谢,但是我需要函数之外的数据。我应该如何在上述函数之外获取数据。你不能。这就是使用承诺的方式。好吧,那我怎么能将返回的变量绑定到ng模型并在HTML中访问相同的变量呢?因为angular看到这是一个承诺并相应地处理它。你能告诉我如何在视图(HTML)中使用返回的变量吗?