2014-10-08 126 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); 
    }); 
};