2015-10-10 2 views
0

У меня есть несколько отдыха услуг, который выглядит, как этопараметров ngResource по умолчанию из обещания

/user/:userId/resource/:resourceId 

Большая часть времени пользователь хочет получить свои собственные ресурсы (хотя иногда он хочет получить ресурс пыльников пользователя) поэтому я хочу параметр по умолчанию, чтобы быть текущим Id пользователя, но я не могу сохранить UserId на rootscope/услугу, потому что, если пользователь обновляет браузер это уже не будет, так что я хочу сделать что-то вроде этого:

$resource('/user/:userId/resource/:resourceId', { userId: getUserId, resourceId: '@id' }) 

в проблема в том, что getUserId() возвращает обещание:

function getUserId() { 
    if (!$rootScope['user']) { 
     $rootScope['user'] = UserService.get({ userId: 'current' }) 
    } 
    return $rootScope['user'].$promise.then(function (user) { 
     return user.id; 
    } 
} 

как я могу заставить его работать на все услуги (как сейчас я просто всегда цепочки каждый сервис ресурсов после USERID добытчика ... есть лучший способ?

+0

Лично я хранил в сеансе нечувствительные данные, подобные этому. Таким образом, он легко доступен и доступен до тех пор, пока браузер не будет закрыт или пользователь не выйдет из системы. Это гораздо проще, чем пытаться настроить службы для обработки чего-то подобного. – buzzsaw

+0

Если бы это был обычный вызов $ http, это было бы довольно легко, с ресурсом его больше работа из-за поведения ресурса. Я могу помочь вам, если вы измените этот ресурс $ на обычный вызов $ http, и вы сможете его адаптировать оттуда. –

+0

@BenjaminGruenbaum Я знаю, что можно создать такой запрос вручную, но у меня много приятных apis, и библиотека ngResource мне очень хорошо помогает. – RonZ

ответ

1

Используйте сеанс браузера для хранения этих нечувствительных данных.

// Set the user object into the session as a JSON object 
function setUser(user) { 
    sessionStorage.setItem("user", JSON.stringify(user)); 
} 

// Retrieve user object and parse the userID 
function getUserId() { 
    var tmpUser = JSON.parse(sessionStorage.getItem('user')); 
    return tmpUser.userID; 
} 

Тогда ваш $ ресурс не будет иметь никаких обещаний возвращаются к нему, и вы можете получить доступ/изменить идентификатор пользователя из любого места в коде, не загрязняя ваш $ rootScope.

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

  • Нет связанных вопросов^_^