Мое понимание заключается в том, что услуги AngularJS похожи на однополые и, таким образом, только один экземпляр. Поэтому они должны быть полезны для хранения таких вещей, как «isUserLoggedIn». Но, с моим приложением, кажется, что служба работает на каждой загрузке страницы. Это вызывает проблемы, поскольку он сбрасывает значения.Предотвращение перезагрузки службы AngularJS?
Что я делаю неправильно?
У меня есть index.html, как это:
<body ng-app="MyApp">
<div class="container" ng-view=""></div>
</body>
Моя служба выглядит следующим образом:
MyApp.service('sharedProperties', function() {
var isLoggedIn = false;
return {
getProperty: function() {
return isLoggedIn;
},
setProperty: function(value) {
isLoggedIn = value;
}
}
})
Проблема, когда я иду от одного маршрута/страницы к другой эта служба держит получение вызова и установка isLoggedIn в false.
Я пробовал кэширование 'форсинга', чтобы улучшить шансы index.html не перезагружать и, таким образом, заставляет службу запускаться, но безрезультатно.
Любые идеи?
Что-то не так с вашей навигацией: он не должен перезагружать страницу, а просто меняет маршрут. Тем не менее, вы должны поддерживать перезагрузку страниц и, таким образом, сохранять состояние logedIn в постоянном местоположении: файл cookie, локальное хранилище, ... –
Если вы явно не используете какой-либо механизм хранения (на стороне клиента или на стороне сервера), любая перезагрузка страницы повторно активирует услуг (по сути, все JS-коды) – moha297