AngularJS:刷新服务结果

AngularJS:刷新服务结果,angularjs,angular-http,Angularjs,Angular Http,我有一个通过$http获取项目的服务。在控制器中,我与视图共享此数据。它可以工作,但当我通过$http删除或添加新项目时,我无法使我的列表保持最新 我创建了一个刷新函数,每次添加或删除项目时都会调用该函数,但刷新只会不时应用。虽然函数总是被适当地调用和执行,但不是在每个操作上 我应该如何在每次操作中刷新我的项目 功能: 服务: 我也读过关于$watch的文章,并试图让它在这种情况下工作,但它似乎没有任何区别: $scope.$watch('itemsService.getItems()', fu

我有一个通过$http获取项目的服务。在控制器中,我与视图共享此数据。它可以工作,但当我通过$http删除或添加新项目时,我无法使我的列表保持最新

我创建了一个刷新函数,每次添加或删除项目时都会调用该函数,但刷新只会不时应用。虽然函数总是被适当地调用和执行,但不是在每个操作上

我应该如何在每次操作中刷新我的项目

功能:

服务:

我也读过关于$watch的文章,并试图让它在这种情况下工作,但它似乎没有任何区别:

$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);