2016-09-14 2 views
0

У меня есть следующая переменная, которая легко преобразуется в JSON-String:

var data = { 
    ball: { 
     colour: "", 
     size: "", 
     price: "" 
    }, 
    toys: [] 
} 

В моем контроллер я хочу добавить эту переменную в сферу, как:

$scope.data = angular.copy(data) 

Тогда я хочу, чтобы хранить на $ sessionStorage как:

$sessionStorage.data = angular.toJson($scope.data); 

После того, как Обновление страницы $scope.data снова пуст. Есть идеи?

+0

Разве это не возможно с $ sessionStorage? Если нет, то почему и в чем разница с $ localStorage? @SaEChowdary – thigi

+0

После обновления ваши данные находятся в '$ sessionStorage.cv', а не' $ scope.data'. Эта последняя строка кода просто сериализует данные в sessionStorage. Вам нужен код, который будет десериализовать его из sessionStorage, когда его нет. Что-то вроде '$ scope.data = $ scope.data || $ SessionStorage.cv'. –

+0

Можете ли вы быть более точным? Возможно ли хранить массив, а не обычную переменную? @MikeMcCaughan – thigi

ответ

0

Это как мой код работает:

$scope.$storage = $sessionStorage; 

    if (typeof $scope.$storage.data !== 'undefined') { 
     $scope.data = $scope.$storage.data; 
    } else { 
     $scope.data = angular.copy(data); 
     $scope.$storage.data = $scope.data; 
    } 

Сокращенное решение будет:

$scope.cv = $scope.$storage.cv || angular.copy(cv); 
    $scope.$storage.cv = $scope.cv; 
+0

'$ scope.cv = $ Объем. $ storage.cv || angular.copy (cv); ' – nabin

+0

Это не работает! Вам еще нужно: $ scope. $ Storage.data = $ scope.data; 'для else! – thigi