Angularjs工厂的http get给出了'undefined不是一个函数'

时间:2015-01-13 15:40:07

标签: javascript angularjs angular-promise

这是我的代码。我收到一条错误消息:TypeError: undefined is not a function: 我认为问题在于我对承诺缺乏了解,但如果有人能够启发我,我会非常感激。

getProgramDetails:  function (program) {
    var _this = this;
    this.getDetails(program).then(function() {
        ....
    });
},
getDetails: function (program) {
    var _this = this;
    var deferred = $q.defer();

    // Error occurs at this line
    this.http.get({id: program.programID}).then(function(results) {
        if (results && results.programID) {
            _this.isNewProgram = false;
            _this.selectedProgram = {
                ...
            };
        } else {
            _this.isNewProgram = true;
            _this.selectedProgram = {
                ...
            };
        }
        deferred.resolve();
    });
    return deferred.promise;
},

http: $resource(
$window.detailsEndpoint',
{ id: '@id' },
{   //parameters default
    update: {
        method: 'PUT',
        params: {}
    },
    get: {
        method: 'GET',
        params: {
            id: '@id'
        }
    },
    post: {
        method: 'POST'
    }
})

1 个答案:

答案 0 :(得分:1)

我认为$resource没有像.then()这样的$http方法,而是尝试将回调作为第二个参数传递

this.http.get({id: program.programID}, function(results){});

或致电其$promise

this.http.get({id: program.programID}).$promise.then(function(results){});