2014-09-18 54 views
0

我有一個服務功能,看起來像:不能解析我在控制器的承諾 - AngularJS

this.addJobRating = function(jobId, userId, rating){ 
    var deferred = $q.defer(); 
    $http.post('/to/my/api', {job_id: jobId, user_id: userId, rating: rating}) 
     .success(function(data){ 
      deferred.resolve(data) 
     }) 
     .error(function(data){ 
      deferred.reject('promise call failed'); 
     }); 
    return deferred; 
}; 

我可以撥打以上在我的控制器像這樣

console.log(myService.addJobRating(646, 9999, 'good-result') 

該日誌的預期在控制檯日誌中承諾對象。但如果我嘗試解決使用的承諾:

myService.addJobRating(646, 9999, 'good-result').then(function(data){ 
    console.log(data); 
}, function(data){ 
    console.log(data); 
}); 

我收到TypeError: undefined is not a function錯誤。

這是怎麼發生的?

+3

讓這個錯字分開,爲什麼不能直接返回http promise呢? (返回$ http.post('/ to/my/api',{job_id:jobId,user_id:userId,rating:rating})。返回$ q.reject('promise call failed');});' – PSL 2014-09-18 18:55:08

回答

4

myService.addJobRating應該返回deferred.promise

3

您應該從addJobRating返回承諾 - deferred.promise - 而不是deferred