2014-12-19 3 views
0

Теперь я использую этот код, и я бы хотел использовать localStorage, чтобы сохранить состояние моих виджетов на панели инструментов, чтобы при возврате пользователя в мое приложение позиция виджетов была неповрежденной и сохраняется, но каждый раз, когда я обновляю браузер, он возвращается к текущему состоянию scope.dashboards, о котором я понятия не имею, как я буду исправлять. Я использовал модуль ngStorage для LocalStorageПри обновлении браузера localStorage flushes

var modInProgr = false; 
    $scope.$watch("dashboards['1'].widgets", function(newVal, oldVal) { 
     if (!modInProgr) { 
      modInProgr = true; 
      // modify dashboards 
      $scope.$storage = $localStorage; 
      $localStorage.sample = $scope.dashboards[1]; 
      console.log($localStorage.sample); 
     } 
     $timeout(function() { 
      modInProgr = false; 
     }, 0); 

     $scope.dashboard = $localStorage.sample; 
    }, true); 

    // init dashboard 

    $scope.dashboard = $localStorage.sample; 
+0

ваша страница локальная (как при обращении к файлу в вашем браузере) или на сервере? – atmd

+0

Возможно, это связано с: http://stackoverflow.com/questions/3738047/localstorage-doesnt-retrieve-values-after-page-refresh – atmd

ответ

0

У меня есть кнопка, чтобы пользователь щелкает вызвать эту функцию:

//Used to save the dashboard to BOTH local storage and PENN database 
//Local storage will attempt to be loaded first. However, if local storage is not there 
//then we will load the dashboard from the database 
$scope.serialize = function() { 

    $scope.dashboardJSON = angular.toJson($scope.standardItems); 

    console.log($scope.dashboardJSON); 

    localStorageService.set("DashboardInfo", $scope.dashboardJSON); 

    //Send HTTP request 'POST' to saveDashboard function in Rails controller 
    $http({ 
     method: 'POST', 
     url: 'saveDashboard', 
     data: {'dashboardInfo': $scope.dashboardJSON }, 
     headers: {'Content-Type': 'application/json' } 
     }).success(function(data, status, headers, config) 
     { 
      //Let user know that their dashboard was saved with this success flash 
      $scope.successSavingDashboardToDBAlert(); 
     }).error(function(data, status, headers, config) 
     { 
      //Let the user know the dashboard could not be saved with this error flash 
      $scope.errorSavingDashboardToDBAlert(); 
     }); 

}; 

Это сохраняет его в локальное хранилище. Я также сохраняю его в базе данных, если локальное хранилище истекает или удаляется.

тогда, когда gridster загружается я делаю это:

var dashboardInfo = localStorageService.get("DashboardInfo"); 

if (dashboardInfo == null) 
{ 
      //Load from the database 
} 
else 
{ 
      //console.log("Loading from Local Storage"); 

       //Parse the local storage JSON data with angular 
      var parsedDashboard = angular.fromJson(dashboardInfo); 

       //Loop through the parsed data to push it to the array that is used for gridster. 
       //Usually this is called items but in my case I called it standardItems 

      for(var i = 0; i < parsedDashboard.length; i++) 
      { 
       //console.log(parsedDashboard[i]); 
       $scope.standardItems.push(parsedDashboard[i]); 
      } 
        //$scope.successAlert(); 
}