AngularJS: 如何将 http 调用与变量同步?
AngularJS: How to sync an http call with a variable?
我正在尝试在控制器内执行一个通用功能,该功能从后端给我数据并将此数据分配给一个变量。
我制作了这段代码,但它不能正常工作。
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 时,它无法正常工作,因为当我尝试显示总数时console.log("Total profiles: " + $cope.data.data.length) 我有下一个出口:
函数外部配置文件总数:$scope.data:未定义
此外,执行不同步,因为首先尝试显示$scope.data的值,然后是后端的值。
如何同步此调用并将函数的出口正确分配给 $scope.data 变量?
有什么方法可以用服务做我想做的事吗?我正在尝试这样做,但 $q 变量始终未定义,而且我不知道如何正确传递。你有任何工作正常的例子吗?
一个选项
是在 self.getData() 的 return 调用中分配你的 $scope.data。
像这样:
$http.get(url)
.success(function(data){
deferred.resolve(data);
$scope.data = self.getData(ServiceURL.url[7]); //Here is it.
console.log("Total profiles: " + data.data.length);
});
你不能只在一个函数中设置 $scope.data,然后像这样调用函数。
function getProfiles(){
$http.get(url).success(response){
$scope.data = response;
}
getProfiles();
我正在尝试在控制器内执行一个通用功能,该功能从后端给我数据并将此数据分配给一个变量。
我制作了这段代码,但它不能正常工作。
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 时,它无法正常工作,因为当我尝试显示总数时console.log("Total profiles: " + $cope.data.data.length) 我有下一个出口:
函数外部配置文件总数:$scope.data:未定义
此外,执行不同步,因为首先尝试显示$scope.data的值,然后是后端的值。
如何同步此调用并将函数的出口正确分配给 $scope.data 变量?
有什么方法可以用服务做我想做的事吗?我正在尝试这样做,但 $q 变量始终未定义,而且我不知道如何正确传递。你有任何工作正常的例子吗?
一个选项
是在 self.getData() 的 return 调用中分配你的 $scope.data。 像这样:
$http.get(url)
.success(function(data){
deferred.resolve(data);
$scope.data = self.getData(ServiceURL.url[7]); //Here is it.
console.log("Total profiles: " + data.data.length);
});
你不能只在一个函数中设置 $scope.data,然后像这样调用函数。
function getProfiles(){
$http.get(url).success(response){
$scope.data = response;
}
getProfiles();