我有一个添加表单,如果用户同时提交表单并提交,则用户可以使用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();
};
我想在其他标签中看到更改,而无需刷新或重新加载
答案 0 :(得分:0)
每个浏览器选项卡根据定义彼此分开,并且不能彼此直接通信。
有一些可能的方法可以解决该问题:例如,您可以拥有一个单独的外部服务,并始终轮询该服务以获取最新更改,如果发生更改,则自动调用reload。
或者您可以使用提供网络套接字的服务,一旦您的数据发生更改,该套接字将向您发送更新通知。
只想为您指明正确的方向,主题是为您提供最终的解决方案。我建议对标签之间的通信方式/如何使用新数据的更新通知构建服务进行研究
编辑:只需在注释中添加@Yftach点:从理论上讲,选项卡之间共享本地存储,因此从理论上讲,您可以在其中有一个变量,并观察间隔的变化。但是(至少在我看来)使用单独服务器的解决方案更好