2013-08-13 5 views
0

Мое понимание заключается в том, что услуги 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 не перезагружать и, таким образом, заставляет службу запускаться, но безрезультатно.

Любые идеи?

+2

Что-то не так с вашей навигацией: он не должен перезагружать страницу, а просто меняет маршрут. Тем не менее, вы должны поддерживать перезагрузку страниц и, таким образом, сохранять состояние logedIn в постоянном местоположении: файл cookie, локальное хранилище, ... –

+1

Если вы явно не используете какой-либо механизм хранения (на стороне клиента или на стороне сервера), любая перезагрузка страницы повторно активирует услуг (по сути, все JS-коды) – moha297

ответ

0

Попробовать это

MyApp.service('sharedProperties', function() { 


    service = { 
     isLoggedIn : false, 

     getProperty: function() { 
      return service.isLoggedIn; 
     }, 

     setProperty: function(value) { 
      service.isLoggedIn = value; 

     } 
    }; 
    return service; 

}); 
0

Используйте CacheFactory вместо этого, которые могли бы помочь более ..

0

Если вы сделаете свой сервис значение или константа, это должно уйти.

myModule.value('sharedProperties', { 
    isLoggedIn : false, 

    getProperty: function() { 
     return service.isLoggedIn; 
    }, 

    setProperty: function(value) { 
     service.isLoggedIn = value; 

    } 
}); 

Угловых документов являются достойным чтением о difference between constants, values, services, factories, providers.

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