Когда нормально хранить объект на $rootScope в AngularJS
Я вижу много учебников по аутентификации, которые помещают объект auth в $rootScope, включая AngularFire-seed от людей FireBase.
Я думал, что плохая практика заключается в том, чтобы поместить объекты в корневую область, и вместо этого лучше создать службу. Почему это (видимо) нормально, когда дело доходит до аутентификации? Вернее, более общий вопрос: когда это нормально и, возможно, даже хорошая практика, чтобы что-то положить на корнеплод?
Чтобы привести другой пример. У меня есть профиль-объект для пользователя. Можно ли также добавить это в auth-объект? Я даже не загрязняю корнеплод в этом случае, поскольку auth-объект уже существует. Можно ли поместить профиль на корнеплод как это (через auth-объект)? Если нет, то почему?
Я знаю, это было несколько вопросов, но все они сводятся к одному в заголовке в заголовке...
Ответы
Ответ 1
Скорее всего, из-за того, как прототипическое наследование работает в JavaScript.
Например: клиенту потребуются авторизированные учетные данные во всем приложении, что лучше, чем $rootScope
? (за исключением случаев, когда вы хотите использовать его в службе и вводите эту службу по всем артефактам). Это работает как ASPECT для решения сквозных функций переноса данных auth. Добавляя данные, связанные с auth, в $rootScope
, вы можете легко получить подробную информацию о любом из scope
, который, по-видимому, наследуется от $rootScope
(из-за прототипического наследования).
Это справедливо для директив не с изолированной областью, но для изолированного объема также стена для поднятия будет мала, так как вы получаете эффективный механизм двусторонней привязки.