Angular js 观看会话存储

exi*_*onX 5 javascript session-storage web-storage node.js angularjs

我有一些来自不同控制器的数据,这些数据使用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);

        }
    ]);
Run Code Online (Sandbox Code Playgroud)

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

sma*_*sma 4

webStorage.session$scope.mySessionStorage仅在控制器初始化时将该值设置为一次。因此手表上方的代码仅触发一次。

尝试观察该webStorage.session值而不是控制器中的值:

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

  • 它不是这样工作的,但如果我用 sessionStorage 替换 webStorage.session ,它就可以工作......真的不知道为什么...... (2认同)