2015-02-13 3 views
0
angular.module('eventTracker', []) 

.controller('MainCtrl', ['$scope', 'Event', function($scope, Event){ 
    $scope.eventData = {} 
    $scope.onSubmit = function(){ 
     Event.Add($scope.eventData) 
     $scope.eventData = {} 
    } 
}]) 

.factory('Event', function(){ 
    if (!eventList) { 
     var eventList = [] 
    } 
    return { 
     Add: function(event){ 
      eventList.push(event) 
     }, 
     List: eventList 
    } 
}) 

Привет всем, Я пытаюсь сохранить eventList через обновление страницы, и я хотел бы получить некоторые отзывы о том, почему это может произойти! Я бы предпочел не использовать файлы cookie, localstorage или rootcope. Я думал, что мой сервис настроен правильно, но я думаю, нет. Любая помощь будет принята с благодарностью! Все работает отлично, за исключением случаев, когда я обновляю страницу, я теряю все предыдущие данные.Сохранение данных на странице обновления в Angular

+0

Почему вы освежаете? – dandavis

+0

По обновлению страницы вы имеете в виду на уровне браузера или маршруте в приложении angularjs? – jsonmurphy

+0

на уровне браузера. В конечном итоге я перенаправляюсь на другую страницу, и я хочу, чтобы у меня были все эти данные. – Mark

ответ

0

При обновлении страницы в браузере все сохраненные данные в переменных Javascript теряются. Если вам нужно обновить страницу, данные необходимо сохранить в базе данных, и вам нужно запросить данные на загрузке страницы, используя что-то вроде AJAX.

Если вы хотите изменить «страницы» в своем приложении AngularJS, вы должны использовать маршрутизацию и несколько видов для имитации нескольких веб-страниц. Это позволит вам вытягивать разные страницы при сохранении любых данных, хранящихся в вашем сервисе.

Check out routing inside of the AngularJS tutorial.

0

Ваши варианты поперечного состояния страницы действительно сводятся к:

стороне сервера - то есть сохраняются/извлечения с сервера через AJAX

стороне клиента:

  • Печенье
  • Другие государственные магазины, такие как флэш (устаревшие), локальное хранилище HTML 5, хранилище сеансов
  • Wrap выше в 3-сторонней библиотеки, такие как http://amplifyjs.com/api/store/

Если это очень небольшое количество состояния и выше варианты не подходят можно кодировать состояние в URL-адресов (например, как параметр строки запроса при смене страницы), но это большая работа для более чем тривиального сценария.

Все, что находится в пределах углового приложения/области/корнеплода, будет потеряно при обновлении страницы.

Это можно рассматривать как «хорошую вещь», поскольку это дает вам возможность очистить память браузера. SPA-приложения великолепны, но в богатых SPA-приложениях много раздувается и рискует одним плохим сценарием, приносящим все приложение. Ломать СПА в несколько мини-приложений имеет много преимуществ для этого.

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