2014-10-02 6 views
0

을 사용하는 AngularJs 서비스 메소드에 액세스 할 때 오류가 발생했습니다. angularjs를 처음 사용하고 $ resource을 사용하여 내 나머지 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'라는 필드가 있다고 생각합니까? –

+0

나는 시작점에 각도가 있으며이를 수정하는 방법에 대한 단서가 없습니다. 내 요구 사항은 나중에 사용하기 위해 검색 할 수 있도록 서비스 내에 로그인 된 사용자 개체를 저장하는 것입니다. –

+1

그것은 각과 관련이 없습니다. 존재하지 않는 속성에 액세스하려고합니다. getLoggedInUser는 사용자가 정의한 함수입니다. 조회 속성이 없습니다. 함수를 결코 호출하지 않습니다. 또한 호출 한 경우에도 아무 것도 반환하지 않습니다. –

답변

1

$ 기호를 추가해야합니다. 그리고 함수에서 $ resource 객체를 반환하십시오.

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

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

시도했지만 여전히 동일한 오류가 발생합니다. TypeError : userService.getLoggedInUser. $ query is not function –

+0

'userService.getLoggedInUser(). $ query (...)'를 의미합니까? 함수의 속성에 액세스하는 것과 함수가 반환하는 객체의 속성에 액세스하는 것의 차이점에 유의하십시오. –

+0

@JBNizet 사실, 나는 실제로 그것을 잡지 못했습니다 ... 지금 고쳐졌습니다. –