保存/恢复angularjs的几个作用域变量

Saving/Restoring angularjs several scope variables

本文关键字:几个 作用域 变量 恢复 angularjs 保存      更新时间:2023-09-26

我有两个不同的视图,但它们都只有一个控制器,因为它们有几个共同点。但是,当加载第二个视图时,存储在第一个视图范围内的所有数据都将丢失。对于这个问题,我在这里找到了一个很好的解决方案

只有当范围内的数据数量很少时,这个解决方案才看起来不错,而我的情况并非如此。我有几个数据存储在控制器范围。所以我想有一种方法来迭代数据(只有我保存的数据不是角的数据),但我不确定我如何迭代这些值。任何想法吗?

我有一些类似的要求,我已经为相同的目的创建了一个指令

csapp.directive("csDataStore", ["$location", "$sessionStorage", function ($location, $sessionStorage) {
    var controllerFunction = ["$scope", function ($scope) {
        var enter = function () {
            var storedValue = $sessionStorage[$scope.key];
            if (angular.isDefined(storedValue)) $scope.value = storedValue;
            $scope.onLoad();
        };
        enter();
        var exit = function () {
            $sessionStorage[$scope.key] = $scope.value;
        };
        $scope.$on("$destroy", function () { exit(); });
    }];
    return {
        restrict: "E",
        scope: { key: '@', value: '=', onLoad: '&' },
        controller: controllerFunction
    };
}]);

我像这样使用指令

<cs-data-store key="stkh.view" value="filter" on-load="loadData()"></cs-data-store>

所以我们这里有3个参数:key/value,然后在作用域中加载该值时该怎么做…因此,一个on-load回调函数,它将在$scope

中加载键后调用

我使用$sessionStorage,以保持值甚至在页面刷新之间