我正在使用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()
,而无需刷新。
有人可以解决我这个问题吗?
答案 0 :(得分:0)
使用storage事件:
angular.element(window).on("storage", $scope.getAllContact);
$scope.$on("$destroy", function() {
angular.element(window).off("storage", $scope.getAllContact);
});
有关信息,请参见