【问题标题】:Angular js watch session StorageAngular js 观看会话存储
【发布时间】:2014-09-26 22:03:08
【问题描述】:

我有一些来自不同控制器的数据,这些数据使用https://github.com/fredricrylander/angular-webstorage 存储在 sessionStorga 中。数据存储正常,在当前会话中可用。 我面临的问题是制作一个控制器来监视 webstorage.session 的变化我这样做是这样的:

app.controller(
    'updateDataController',
    ['$scope','$http','$sce','$location','$routeParams', '$rootScope', '$document', 'webStorage', '$interval', 'md5',
        function($scope,$http,$sce,$location,$routeParams, $rootScope, $document, webStorage, $interval, md5) {

            $scope.mySessionStorage = webStorage.session;

            $scope.$watch('mySessionStorage', function (newVal, oldVal) {
                 console.log("The web storage has changed");
            }, true);

        }
    ]);

我只得到一次 console.log 输出。即使我更改了 webStorage.session 的内容,我也没有收到任何日志。可能是什么问题?

【问题讨论】:

    标签: javascript node.js angularjs session-storage web-storage


    【解决方案1】:

    webStorage.session 仅在控制器初始化时将值设置为$scope.mySessionStorage 一次。所以手表上面的代码只会触发一次。

    尝试查看webStorage.session 值而不是控制器中的值:

    $scope.$watch(function () {
       return webStorage.session;
    }, function (newVal, oldVal) {
       console.log("The web storage has changed");
    }, true);
    

    【讨论】:

    • 它不像这样工作,但如果我用 sessionStorage 替换 webStorage.session 它工作......真的不知道为什么......
    • @exilonX 是对的。我们也可以通过返回 sessionStorage.getItem("") 而不仅仅是 sessionStorage. 来设置特定键的监视
    猜你喜欢
    • 2018-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2023-03-08
    相关资源
    最近更新 更多