保存/恢复angularjs几个范围变量

时间:2014-07-19 19:56:20

标签: javascript angularjs angularjs-scope

我有两种不同的观点但是对于它们两者而言只有一个控制器,因为它们有几个共同点。但是当加载第二个视图时,存储在第一个视图范围内的所有数据都将丢失。 对于这个问题,我发现了这个非常好的解决方案here

这个解决方案看起来不错,只要我在范围内的数据很少,而不是我的情况。我有几个数据存储在控制器范围内。所以我想有办法迭代数据(只有我保存的数据而不是有角度的数据),但我不知道如何迭代这些值。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

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

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个参数:键/值然后如何在范围内加载该值...所以一个onback的回调函数,在加载了密钥后调用$ scope

我使用了$ sessionStorage,以便在页面刷新之间保持值......