2015-04-06 18 views
0

Теперь я пользуюсь службой для передачи данных из вида в другое представление (другой контроллер тоже), в представлении A у меня есть контроллер CtrA, для службы, которую я использую для передачи данных:Данные исчезнут после обновления страницы,

.factory(
       'editreportservices', 
       [ 
         '$q', 
         'sessionId', 
         function($q, sessionId) { 
           var sharedata = {}; 
           var org={}; 
           function passed(data){ 
            sharedata = data; 
           }; 
           function getsharedata(){ 
            return sharedata; 
           }; 
           function passedorg(data) { 
            org=data; 
           } 
           function getorg() { 
            return org; 
           } 
           return{ 
            passed:passed, 
            getsharedata:getsharedata, 
            passedorg:passedorg, 
            getorg:getorg 
           }    
         }]); 

в CTRA, если я нажал на кнопку, я установлю значение для editreportservices.passed (отчета), как:

$scope.goeditpage = function(report){if(report){ 
          editreportservices.passed(report); 
          } 
          else{ 
          report={} 
          editreportservices.passed(report); 
          }; 
         $state.go('editreport'); 
} 

и это также изменится на View B, и в силе BI может получить доступ к данным с помощью $ scope.lin = editreportservices.getsharedata(), работает как ожидается. Но есть проблема, я не уверен, что это ошибка или нет, если пользователь обновит страницу, данные, переданные из viewA, исчезнут. это может быть плохой пользовательский опыт, есть ли в любом случае я могу сохранить данные в viewB после того, как он передан из VIewA?

+0

это ожидается. если вы обновляете, вам нужно перезагрузить свои данные. Обходной путь - использование localstorage или webdb – ABOS

ответ

4

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

Если вы хотите сохранить данные, вы должны сохранить данные либо в localStorage, либо в файлах cookie.

В вашей службе,

var sharedata = localStorage.getItem("shareData")? JSON.parse(localStorage.getItem("shareData")) || {}; 
var org={}; 
function passed(data){ 
     sharedata = data; 
     localStorage.setItem("shareData", JSON.stringify(sharedata)); 
}; 
function getsharedata(){ 
    return sharedata; 
}; 
+0

Я знаю причину, а также об использовании файла cookie или localstorage, но я хочу знать, есть ли «угловой» способ сделать это? – linyuanxie

+0

только вещь угловая имеет оболочку для 'localStorage' под названием' $ localStorage' и аналогично для файлов cookie. Но нет другого углового способа здесь – mohamedrias

+1

Спасибо, человек, я понял. Это то, что есть, :) – linyuanxie

-1

Это не ошибка, это нормально. Вы можете использовать хранилище HTML5 с истечением срока хранения.