2014-10-02 80 views
0

我是angularjs的新手,嘗試訪問使用$ resource調用我的rest api的服務方法。但是,當我試圖訪問它提供一個錯誤。也當我嘗試訪問不使用$資源的方法時,它工作正常。

這是我的代碼。

app.factory('userService', ['$resource', 
    function($resource) {   
     var factory = {}; 

     factory.authenticatedUser; 

     factory.test = function(){ 
      return "Test"; 
     }; 

     factory.getLoggedInUser = function(){ 
      $resource('api/user', {}, { 
       query: {method: 'GET'} 
      }); 
     }; 

     factory.getAuthenticatedUser = function(){ 
       return factory.authenticatedUser; 
     }; 

     factory.setAuthenticatedUser = function(user){ 
       factory.authenticatedUser = user; 
     }; 

     return factory; 
    }]); 

這裏是我如何嘗試訪問該方法。

userService.getLoggedInUser.query(function(loggedInUser) { 

}); 

這會引發以下錯誤。

TypeError: userService.getLoggedInUser.query is not a function 

但這工作正常。

var text = userService.test(); 

我在做什麼錯在這裏?

+0

'getLoggedInUser'是一個函數。你爲什麼認爲它有一個名爲'query'的函數類型的字段? – 2014-10-02 06:16:53

+0

我在角度的起點,並沒有關於如何解決這個問題的線索。我的要求是將登錄的用戶對象存儲在服務中,以便我可以檢索它以備後用。 – 2014-10-02 06:23:41

+1

這與角度沒有多大關係。您試圖訪問不存在的屬性。 getLoggedInUser是你定義的一個函數。它沒有查詢屬性。請注意,您從不*調用*函數。還要注意的是,即使你叫它,它也不會返回任何東西。 – 2014-10-02 06:25:47

回答

1

您需要添加$符號。並從您的函數返回$資源對象

factory.getLoggedInUser = function(){ 
     return $resource('api/user', {}, { 
      query: {method: 'GET'} 
     }); 
    }; 

userService.getLoggedInUser().$query(function(loggedInUser) { 
}); 
+0

嘗試了它,但它仍然給出相同的錯誤。 TypeError:userService.getLoggedInUser。$ query不是函數 – 2014-10-02 06:20:41

+0

你的意思是'userService.getLoggedInUser()。$ query(...)',對吧?請注意訪問函數的屬性和訪問由函數返回的對象的屬性之間的區別。 – 2014-10-02 06:22:35

+0

@JBNizet沒錯,我其實並沒有明白......現在修好了。 – 2014-10-02 06:26:41

相關問題