2014-03-12 42 views
2

造成“然后”一个承诺,我有以下的代码作为我的AngularJS应用程序的一部分: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返回承诺。有人能告诉我我在这里错过了什么吗?由于

回答

2

它只是NewContactData.getContacts().then(,因为你已经返回一个承诺

+0

但是,这真的很怪,叫saveContact当我使用完全相同的代码,看是否记录被保存或没有,它从不抱怨......这是正常的吗? – MChan

+1

在返回的承诺中调用'。$ promise'是无稽之谈,我不知道为什么其他代码适用于您,它不应该是如果它被正确写入 – doodeec

+0

感谢您的澄清 – MChan

1

试试这个:

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