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

标签 javascript angularjs angularjs-scope

我有两种不同的观点,但对于它们两者来说,只有一个 Controller ,因为它们有几个共同点。但是,当加载第二个 View 时,第一个 View 范围内存储的所有数据都会丢失。 对于这个问题我找到了这个非常好的解决方案here

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

最佳答案

我有一些类似的要求,并且我出于相同目的创建了一个指令

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 个参数:键/值,然后在范围内加载该值时要做什么...所以加载回调函数,在键加载后将调用该函数$范围

我使用 $sessionStorage,在页面刷新之间保持值均匀......

关于javascript - 保存/恢复 angularjs 的几个作用域变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24844394/

相关文章:

javascript - PouchDB bulkDocs 能否只触发一次 "change"事件?

javascript - 在使用 cmake 打包成 zip 之前缩小 CSS 和 Javascripts 文件

javascript - 如何使用 offsetWidth 创建响应式表格?

javascript - AngularJS 的跨域请求不起作用

javascript - 将 ng-model 的一部分与 angularjs 中的范围绑定(bind)

javascript - 通过 jQuery 检查链接

javascript - 动画 Paper.js 路径段和句柄信息

javascript - 谷歌登录/第三方身份验证提供商

javascript - angular js - 无法访问推送到 Controller 中数组的对象

javascript - 更改状态时某些参数不会传递值