我试图在控制器内部执行一般功能,该控制器从后端向我提供数据并将此数据分配给变量。
我已经制作了这段代码,但它无法正常使用。
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:undefined
此外,执行不同步,因为首先尝试显示$ scope.data的值,然后显示后端的值。
如何同步此调用并正确地将函数的退出分配给$ scope.data变量?
有什么方法可以用服务做我想要的吗?我试图这样做,但$ q变量总是未定义,我不知道如何正确传递。你有什么例子可以正常工作吗?
答案 0 :(得分:2)
你不能只在函数中设置$ scope.data,然后调用函数,如。
MPMediaItemPropertyTitle : @""
答案 1 :(得分:1)
ONE OPTION
是在self.getData()的返回调用中分配$ 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);
});