Javascript AngularJS返回承诺导致';然后';未定义的

Javascript AngularJS返回承诺导致';然后';未定义的,javascript,angularjs,Javascript,Angularjs,我的AngularJS应用程序中包含以下代码: myApp.factory('NewContactData', function($http,$log, $q) { return { saveContact: function(contact){ var deferred = $q.defer(); ... ... return deferred.promise; }, getContacts: function

我的AngularJS应用程序中包含以下代码:

myApp.factory('NewContactData', function($http,$log, $q) {
 return {    
   saveContact: function(contact){
     var deferred = $q.defer();  
     ...
     ...
     return deferred.promise;     
   }, 
   getContacts: function(){
     var gcdeferred = $q.defer();  
     ...
     ...
     return gcdeferred.promise;         
   }      
 }; 
});      
当我尝试按如下方式从我的应用程序控制器调用getContacts时:

myApp.controller('ContactsController',
        function ContactsController($scope, $location, NewContactData){


    NewContactData.getContacts().$promise.then(
            function(response){
               console.log(response);
            },
            function(status){
               console.log(status);
            }
    );         
我得到一个错误:

TypeError: Cannot call method 'then' of undefined
 at new ContactsController

尽管我的代码显示getContacts返回承诺。有人能告诉我这里缺少什么吗?谢谢

这只是
NewContactData.getContacts()。然后(
因为您已经返回了承诺

请尝试以下操作:

NewContactData.getContacts().then(
        function(response){
           console.log(response);
        },
        function(status){
           console.log(status);
        }
);  

但这真的很奇怪,因为在调用saveContact时,我使用确切的代码来查看记录是否已保存,它从未抱怨过……这正常吗?在返回的承诺上调用
$promise
是毫无意义的,我不知道为什么其他代码对您有效,如果编写正确就不应该了谢谢澄清在…上