【问题标题】:How to store a JSON Variable with AngularJS ngStorage to $sessionStorage如何使用 AngularJS ngStorage 将 JSON 变量存储到 $sessionStorage
【发布时间】:2016-09-14 13:32:32
【问题描述】:

我有以下很容易转换为 JSON 字符串的变量:

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

在我的控制器中,我想将此变量添加到范围中,例如:

$scope.data = angular.copy(data)

然后我希望它存储在 $sessionStorage 上,例如:

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

页面刷新后,$scope.data 再次为空。有什么想法吗?

【问题讨论】:

  • $sessionStorage 不可能吗?如果没有,为什么和 $localStorage 有什么区别? @SaEChowdary
  • 刷新后你的数据在$sessionStorage.cv,而不是$scope.data。最后一行代码只是将数据序列化到 sessionStorage 中。您需要在 sessionStorage 不存在时将其反序列化的代码。类似$scope.data = $scope.data || $sessionStorage.cv
  • 你能再精确一点吗?甚至可以存储数组而不是普通变量吗? @MikeMcCaughan
  • 我刚刚看到您在 $sessionStorage 中存储了一些东西,但从未将其取出,这在逻辑上是行不通的。我没有使用过 ngStorage,所以我不确定它的序列化是如何工作的。这就是为什么我把它写成评论而不是答案:)。我弄清楚这些东西的方法是尝试一下,看看会发生什么。如果它不起作用,请尝试其他方法。此外,the documentation for ngStorage 包含许多示例。
  • 是的,我看过这个。对我帮助不大。 @MikeMcCaughan

标签: angularjs sessionstorage ng-storage


【解决方案1】:

这就是我的代码的工作方式:

    $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;

【讨论】:

  • $scope.cv = $scope.$storage.cv || angular.copy(cv);
  • 这不起作用!您仍然需要:$scope.$storage.data = $scope.data; 为 else!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
相关资源
最近更新 更多