2014-09-26 35 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