使用AngularJS处理自定义localStorage数据

时间:2014-07-31 10:45:53

标签: javascript html5 angularjs local-storage

我写了一个bookmarklet,它从页面中检索信息并将其以JSON格式存储在本地存储中(当然,首先将其转换为字符串)。

我想要一个我正在编写的Web应用程序,能够动态处理这些数据,最好是保存到localStorage。

现在我可以通过控制台更改LS中的项目并刷新页面并显示新数据,但我希望它是实时且无缝的。

有关如何解决此问题的任何建议?我为angularJS找到了几个localStorage模块,我尝试了它们但是如果数据已经存在于LS中,它们似乎不允许我从LS中检索。

回答:

$scope.$watch(
    function(){
        return $window.localStorage.getItem('TestData');
    },
    function(newValueInStorage){
        $scope.testingLS = newValueInStorage;
    }
)

我尝试了这个,我仍然通过在视图模板中执行{{testingLS}}来显示数据,但是当我通过控制台更改本地存储中的TestData键时,它不会更新即刻。 (现在,我只是在没有书签的情况下测试它,只有一个简单的字符串TestData

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点

当保存到localStorage时,其中一个将在范围上填充正确的模型

此时我能想到的另一个是设置观察者

$watch(
  function(){
    return localstorage object
  },
  function(newValueInStorage){
    $scope.modelFromLS = JSON.parse(newValueInsStorage)
  }
)

--- ---编辑 根据詹姆斯的评论,你需要能够处理数据在不同标签中发生变化的事实,并且需要运行$ digest进程才能重新计算观看次数

http://plnkr.co/edit/zlS3wL65meBeA8KkV5KH?p=preview

window.addEventListener('focus', function(){
  console.log('focus')
  $scope.$digest()
})