当AngularJS在localStorage中获取新数据时调用方法

时间:2019-05-21 21:55:29

标签: angularjs

我正在使用angularJS localstorage,并且很好地注入了代码,但是出现了问题。

我想在本地存储获取新数据时,使其自动调用函数$scope.getAllContact()

我正在尝试解决此问题,例如,我在浏览器中打开了两个选项卡,如果我在一个选项卡中进行了任何更改,则最新更改也应反映在其他选项卡中,而无需重新加载和刷新。

首先看到我的代码:

app.controller('crudCtrl', function($scope, $http, $timeout, $localStorage, $sessionStorage) {

  $scope.getAllContact = function() {
    var data = $http.get("http://127.0.0.1:8000/api/v1/contact/")
    .then(function(response) {
      $scope.contacts = response.data;
      // show something if success
    }, function(response) {
      //show something error
    });
  };
  $scope.getAllContact();

  // below method will post data
  $scope.formModel = {}; 
  $scope.onSubmit = function () {
      $http.post('http://127.0.0.1:8000/api/v1/contact/', $scope.formModel)
      .then(function(response) {

        $localStorage.name = response.data;
        $timeout(function() {

          $scope.successPost = '';
        }, 4000);
        //below $scope will push data in client site if the request is success
        $scope.contacts.push(response.data);
        //if any error occurs, below function will execute
      }, function(response) {
        // do nothing for now
      });
  };
});

$scope.onSubmit()之上,我也将提交的数据发送到localstorage,所以我需要,如果localstorage获取新数据,它应该始终自动执行$scope.getAllContact(),而无需刷新。

有人可以解决我这个问题吗?

1 个答案:

答案 0 :(得分:0)

使用storage事件:

 angular.element(window).on("storage", $scope.getAllContact);

 $scope.$on("$destroy", function() {
     angular.element(window).off("storage", $scope.getAllContact);
 });

有关信息,请参见