2014-03-12 39 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); 
     } 
);