AngularJS $ localstorage在其他标签中不起作用

时间:2019-05-22 05:01:53

标签: angularjs

当一个选项卡中发生更改时,我正在尝试执行功能,该更改也应反映在其他选项卡中。

我编写了此代码,即使我手动检查浏览器的本地存储并看到它的效果很好,我也可以在相同的选项卡中进行更改。

但有问题,更改也未反映在其他选项卡中。

我的意思是,我打开了两个选项卡,当我在一个选项卡中更改某些内容时,它应该反映在另一个选项卡中。

只要一个选项卡中发生任何更改,第二个选项卡应执行此$scope.getAllContact();并等待另一更改,如果发生另一更改,则应执行$scope.getAllContact();

$localStorage.editedData = response.data;
      $scope.editedID = $localStorage.editedData.id;
      if (response.data.id == $localStorage.editedData.id) {
        $localStorage.isChanged = true;
      }

      while ($localStorage.isChanged == true) {
        $scope.getAllContact();
        break        
      }

我写了以上代码;

如果您理解以下代码,请忽略下面的代码,下面的代码是功能,当发生更改时,应执行该功能:

$scope.getAllContact = function() {
    var data = $http.get("http://127.0.0.1:8000/api/v1/contact")
    .then(function(response) {
      $scope.contacts = response.data;
      // below two line of codes will reload in every 10 millisecond if a request succcess
      // in result, you will see refleation in other browser if any change occurs in another browser
      // do nothing for now
    }, function(response) {
      //$scope.connectionError = "Opps ! Having Trouble in loading this page ! \n  It's Connection Error !!!";
      // below two line as as above two commented line
      // do nothing for nw
    });
  };
  $scope.getAllContact();

2 个答案:

答案 0 :(得分:1)

您需要在一定时间差内检查本地存储

 setInterval(function(){
     if ($localStorage.isChanged == true) {
            $scope.getAllContact();      
          }  
          }
    }, 500);

答案 1 :(得分:1)

请参阅以下代码可能有帮助

$scope.$apply(function() {
    $scope.contacts = response.data;
});

根据我的假设,您一次只能看到一个标签。因此,致电$scope.getAllContact() 每当您点击第二个标签时。