2014-09-26 85 views
4

我有一些数据来自不同的控制器,使用https://github.com/fredricrylander/angular-webstorage存储在sessionStorga中。数据存储正常,并可在当前会话中使用。 这个问题我现在面临的问候使一个控制器,将观看在webstorage.session我这样做这样的改变:Angular js watch 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的内容,我也没有收到任何日志。可能是什么问题呢?

回答

3

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

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

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

它不会像这样工作,但如果我的sessionStorage它的工作原理更换webStorage.session ......真的不知道为什么... – exilonX 2014-09-26 14:13:58