2014-10-08 2 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); 
    }); 
}; 
Смежные вопросы