2014-10-02 2 views
0

Я новичок в angularjs и пытаюсь получить доступ к методу службы, который использует $ resource для вызова моего отдыха api. Но когда я пытаюсь получить к нему сообщение об ошибке. также когда я пытаюсь получить доступ к методу, который не использует $ resource, он отлично работает.

вот мой код.

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 не является функцией –

+0

Вы имеете в виду 'userService.getLoggedInUser(). $ Query (...)', правильно? Обратите внимание на разницу между доступом к атрибуту функции и доступом к атрибуту объекта, возвращаемого функцией. –

+0

@ JBNizet Правда, я на самом деле не поймал это ... Исправлено сейчас. –

Смежные вопросы