将视图绑定到localStorage值

时间:2015-11-22 14:52:42

标签: angularjs mobile ionic local-storage

我正在构建一个移动应用程序(带有离子),它将发出一个更新视图的http请求。但我希望在ajax调用获取新数据时显示旧值。 我的想法是使用localStorage。我将显示来自localStorage的旧数据,一旦ajax调用带回我想要更新localStorage的新数据。所以我试图使用ngStorage。但它根本不起作用。 这是代码的样子: 控制器

angular.module('starter.controllers', ['ngStorage'])
.controller('Ctrl', function($scope, $localStorage){
  $scope.$storage = $localStorage;
})

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.10/ngStorage.js"></script>
  </head>
  <body ng-app="starter">

    <div ng-controller="Ctrl">
      {{$storage.x}}
    </div>

和本地存储是这样的:

Storage {x: "This should be attached to HTML"}

知道我做错了什么吗?

1 个答案:

答案 0 :(得分:0)

尝试此操作进行数据绑定

angular.element($window).on('storage', function(event) {
    if (event.key === 'my-storage') {
      $rootScope.$apply();
    }
  });

您可以将其包装在工厂中

app.factory("LS", function($window, $rootScope) {
  angular.element($window).on('storage', function(event) {
    if (event.key === 'my-storage') {
      $rootScope.$apply();
    }
  });
  return {
    setData: function(val) {
      $window.localStorage && $window.localStorage.setItem('my-storage', val);
      return this;
    },
    getData: function() {
      return $window.localStorage && $window.localStorage.getItem('my-storage');
    }
  };
});