如何在Angular Js中从服务器获取值到控制器

时间:2015-12-18 17:44:19

标签: angularjs

我正在尝试在控制器中调用服务方法。这是我的代码。 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 可能存在竞争条件。如何在控制器中获取值。

2 个答案:

答案 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);
});