如果有任何更改,AngularJS同时重新加载多个选项卡

时间:2019-05-20 08:03:29

标签: angularjs

我有一个添加表单,如果用户同时提交表单并提交,则用户可以使用ui-view在表的同一页面中看到数据,这不是问题!

问题是:如果我在同一浏览器中打开多个标签,则无需刷新或重新加载该帖子或更改反射就不会显示在其他标签中。我想在浏览器的其他标签或其他浏览器中看到更改,而无需重新加载

我希望看到更改而无需刷新或重新加载。 如果我在其他标签中重新加载,则可以使用,但如果我不在其他标签中重新加载,则更改不会生效

这里是我的发贴方法:

$scope.formModel = {}; 
  $scope.onSubmit = function () {
      $http.post('http://127.0.0.1:8000/api/v1/contact/create/', $scope.formModel)
      .then(function(response) { //if success, below fuction will execute
        $scope.successPost = 'You have successfully submitted your Contact';
        $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) {
        // below variable will get predefined message that will explain exactly what happened
        var errorData = response.data;
        $scope.errorPost = Object.values(errorData)[0][0];
        $timeout(function(){
          $scope.errorPost = '';
        }, 4000);
      });
      $scope.formModel = {}; //It means, after submit, the form field will clear
      $scope.addContactForm.$setPristine(); 
  };

我想在其他标签中看到更改,而无需刷新或重新加载

1 个答案:

答案 0 :(得分:0)

每个浏览器选项卡根据定义彼此分开,并且不能彼此直接通信。
有一些可能的方法可以解决该问题:例如,您可以拥有一个单独的外部服务,并始终轮询该服务以获取最新更改,如果发生更改,则自动调用reload。

或者您可以使用提供网络套接字的服务,一旦您的数据发生更改,该套接字将向您发送更新通知。

只想为您指明正确的方向,主题是为您提供最终的解决方案。我建议对标签之间的通信方式/如何使用新数据的更新通知构建服务进行研究

编辑:只需在注释中添加@Yftach点:从理论上讲,选项卡之间共享本地存储,因此从理论上讲,您可以在其中有一个变量,并观察间隔的变化。但是(至少在我看来)使用单独服务器的解决方案更好