AngularJS:刷新服务结果
我有一个通过$http获取项目的服务。在控制器中,我与视图共享此数据。它可以工作,但当我通过$http删除或添加新项目时,我无法使我的列表保持最新 我创建了一个刷新函数,每次添加或删除项目时都会调用该函数,但刷新只会不时应用。虽然函数总是被适当地调用和执行,但不是在每个操作上 我应该如何在每次操作中刷新我的项目 功能: 服务: 我也读过关于$watch的文章,并试图让它在这种情况下工作,但它似乎没有任何区别:AngularJS:刷新服务结果,angularjs,angular-http,Angularjs,Angular Http,我有一个通过$http获取项目的服务。在控制器中,我与视图共享此数据。它可以工作,但当我通过$http删除或添加新项目时,我无法使我的列表保持最新 我创建了一个刷新函数,每次添加或删除项目时都会调用该函数,但刷新只会不时应用。虽然函数总是被适当地调用和执行,但不是在每个操作上 我应该如何在每次操作中刷新我的项目 功能: 服务: 我也读过关于$watch的文章,并试图让它在这种情况下工作,但它似乎没有任何区别: $scope.$watch('itemsService.getItems()', fu
$scope.$watch('itemsService.getItems()', function(d) {
$scope.items = d;
}, true);
这可能就是你要找的 您可以在请求结束时调用您的函数 您可以使用拦截器来执行此操作
var httpinterceptor = function ($q, $location) {
return {
request: function (config) {
//show your loading message
console.log(config);
return config;
},
response: function (result) {
//hide your loading message
console.log('Repos:', result);
return result;
},
responseError: function (rejection) {
//hide your loading message
console.log('Failed with', rejection);
return $q.reject(rejection);
}
}
})
}) 您认为刷新只会不时应用是什么意思?如中所示,只有在某些情况下,它才真正刷新屏幕上的数据?建议在添加或删除数据时避免发出两个请求。您可以跟踪请求添加或删除的数据,当成功时,将该数据推送到数据数组。@shieldstroy确切地说,屏幕上的数据经常刷新,但并不总是刷新,但是如果我在函数中放入console.log,我可以看到它总是被执行。
$scope.$watch('itemsService.getItems()', function(d) {
$scope.items = d;
}, true);
var httpinterceptor = function ($q, $location) {
return {
request: function (config) {
//show your loading message
console.log(config);
return config;
},
response: function (result) {
//hide your loading message
console.log('Repos:', result);
return result;
},
responseError: function (rejection) {
//hide your loading message
console.log('Failed with', rejection);
return $q.reject(rejection);
}
}
app.config(function ($httpProvider) {
$httpProvider.interceptors.push(httpinterceptor);