2015-01-13 63 views
-1

這是我的代碼。我得到一個錯誤,說:TypeError: undefined is not a function: 我認爲這個問題是我對承諾的理解缺乏,但如果有人可以啓發我,我會非常感激。Angularjs factory http get'undefined不是函數'

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' 
    } 
}) 
+0

如果你可以給我們多一點信息,這將是有益的! – pje

+0

'$ window.detailsEndpoint''似乎缺少''' – Cerbrus

+0

你需要什麼信息?我已經得到,實施並接受了正確的答案。 '是一個錯字。給出正確答案的人清楚地明白這一點。 – Lazloman

回答

1

我不認爲$resource.then()方法類似$http而是試圖通過回調的第二個參數

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

或致電$promise

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

非常感謝!我選擇了第一個選項。 – Lazloman