我正在尝试在 Controller 内执行通用函数,该函数为我提供来自后端的数据并将该数据分配给变量。
我已经编写了这段代码,但它无法正常工作。
self.getData = function(url){
var deferred = $q.defer();
$http.get(url)
.success(function(data){
deferred.resolve(data);
console.log("Total profiles: " + data.data.length);
})
.error(function(error){
//do something
});
return deferred.promise;
};
$scope.data = self.getData(ServiceURL.url[7]);
console.log("Total profiles inside function: " + $scope.data.length);
对该函数的调用工作正常,并正确给出配置文件的总数,但是当我尝试将此数据分配给 $scope.data 时,它无法正常工作,因为当我尝试使用控制台显示配置文件的总数时。 log("总配置文件:"+ $cope.data.data.length) 我有下一个导出:
函数外的配置文件总数:$scope.data:未定义
此外,执行不同步,因为首先尝试显示 $scope.data 的值,然后显示来自后端的值。
如何同步此调用并将函数的退出正确分配给 $scope.data 变量?
有什么办法可以通过服务实现我想要的功能吗?我正在尝试这样做,但 $q 变量始终未定义,而且我不知道如何正确传递。你有什么运行良好的例子吗?
最佳答案
你不能只在函数中设置 $scope.data,然后像这样调用该函数吗?
function getProfiles(){
$http.get(url).success(response){
$scope.data = response;
}
getProfiles();
关于javascript - AngularJS:如何将 http 调用与变量同步?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33585251/