2014-10-08 128 views
0

数据检索我,让

services.factory('proService', ['$resource', function ($resource) { 
    return { 
     getValue: function (context_params) { 
      var Pro = $resource('pro'); 
      return Pro.get({user_id: context_params.userId, course_id: context_params.cKey, activity_id: context_params.activityId}); 
     } 
    }; 
}]); 

我的控制器代码的服务。但我只是把它作为一个承诺。我需要写回电话来获得熟练度值。

$scope.getPro = function() { 
     $scope.pro = proService.getValue({userId: $scope.userId, courseKey: $scope.courseKey, activityId: $scope.activityId}); 
     $scope.pro.rating = 5 * Math.round(($scope.pro.pro * 10)/5); 
     console.log($scope.pro); 
    }; 

$ scope.pro给我

f {$promise: Object, $resolved: false, $get: function, $save: function, $query: function…} 
$promise: Object 
>catch:function(callback){ 
>finally:function(callback){ 
>then:function(callback,errback,progressback){ 
>_proto_:object 
$resolved: true 
proficiency: 2 
>profs:object 
>_proto_:Resource 

我无法调用亲其值为 “2”。这就是我想在我的控制器

$scope.getPro = function() { 
     $scope.pro = proService.getValue($scope.userId, $scope.snapshotId).then(function(data) { 
      $scope.rating = data.pro; 
      console.log($scope.rating); 
      }); 
     }; 

请帮我,我做错了这里。谢谢

回答

0

您需要重写您的控制器代码来处理从您的服务返回的承诺。试试这个:

$scope.getProficiency = function() { 
     proficiencyService.getValue({userId: $scope.userId, courseKey: $scope.courseKey, activityId: $scope.activityId}). 
    then(function(proficiencyValue) { 
     $scope.proficiency = proficiencyValue; 
     $scope.proficiency.rating = 5 * Math.round(($scope.proficiency.proficiency * 10)/5); 
     console.log($scope.proficiency); 
    }); 
};