我正在尝试在控制器中调用服务方法。这是我的代码。 ROAService.js:
return{
loadROAValues:function(userId,roaId){
var params=JSON.stringify({userId:userId,roaId:roaId});
var promise = $http.post(url+'/'+'getROAItems',params).success(function(data){
roaDetails = data;
$log.debug("values in service class");
$log.debug("values in ROA");
$log.debug(roaDetails.id);
return roaDetails
})
.error(function(data){
roaDetails = 'error';
return roaDetails;
});
return promise;
}
}
ROAController.js:
$scope.getROA = function(roaObj){
var currentROA= {};
currentROA = ROAService.loadROAValues($scope.getMemberId(),roaObj.id);
$log.debug("values in controller");
$log.debug(currentROA.id);
}
在控制台中我得到了这些值: 控制器中的值 未定义 服务类中的值 ROA中的值 342 可能存在竞争条件。如何在控制器中获取值。
答案 0 :(得分:2)
您的服务会返回一个承诺,因此您需要致电那么......
currentROA = ROAService.loadROAValues($scope.getMemberId(),roaObj.id).then(function(response) {
console.log(response);
}).catch(function(response) {
console.log("failure", response);
});
答案 1 :(得分:1)
我认为你不应该在服务中做回调。返回一个promise,然后使用then
并在控制器函数中用它做任何你想做的事。
return {
loadROAValues:function(userId,roaId){
var params=JSON.stringify({userId:userId,roaId:roaId});
var promise = $http.post(url+'/'+'getROAItems',params);
return promise;
}
}
然后
currentROA = ROAService.loadROAValues($scope.getMemberId(),roaObj.id)
.then(function(response) {
console.log(response);
}, function(response) {
console.log("error", response);
});