Каков наилучший способ хранения «пользовательского» объекта, доступного для всех контроллеров в угловом приложении?AngularJS: Доступ к объекту с любого контроллера
У меня также есть функция, которая выбирает &.
Вариант 1: $ rootScope
Сначала я просто установка $rootScope.user = myUser
. Тогда в каждом контроле я мог бы использовать $ rootScope. Это было прекрасно, пока у меня не было много дублированного кода, так как я должен был проверить, существовал ли он в начале каждого контроллера.
// At the start of each controller
if (!$rootScope.user) {
// fetch and set user
}
Вариант 2: Угловой сервис?
Вариант 3: Угловая фабрика?
Ссылки: angular.service vs angular.factory
Отсутствует фундаментальная часть наследования $ scope. Если это на $ rootScope ... $ scope в контроллере уже наследует это свойство [ultra simple demo] (http://plnkr.co/edit/4TfpZzSaACDD2odFCA3s). Другими словами, когда вы вводили его и добавляли в $ scope ... он был уже там и доступен. Я не говорю, что это так, как должно быть сделано ... более просто указывая на это. – charlietfl
Спасибо @charlietfl - Я понимаю эту часть :) Но так как человек может открыть приложение на разных контроллерах, мне всегда нужен чек. –
вернуться к вопросу ... если использование UI-маршрутизатора может добавить решение для абстрактного состояния, которое является родительским для всех состояний, для которых требуется auth. Тогда вам нужно всего лишь проверить место на несколько маршрутов. Просто подключите его к службе Auth – charlietfl