无法在控制器中解决我的承诺 - AngularJS

时间:2014-09-18 18:52:14

标签: 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')

这会在控制台日志中记录预期的promise对象。但是,如果我尝试使用以下方法解决承诺:

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

我收到TypeError: undefined is not a function错误。

为什么会这样?

2 个答案:

答案 0 :(得分:4)

myService.addJobRating应该返回deferred.promise

答案 1 :(得分:3)

您应该从addJobRating返回承诺 - deferred.promise - 而不是deferred