AngularJS:刷新服务结果

时间:2015-07-09 19:06:29

标签: angularjs angular-http

我有$http获取的服务。在控制器中,我与视图共享此数据。它有效,但是当我按$http删除或添加新项目时,我无法让我的列表保持最新状态。

我创建了一个refresh()函数,每次添加或删除项目时都会调用该函数,但刷新仅适用于。并不是每个动作,尽管函数总是被正确地调用和执行。

如何在每次操作时刷新我的项目?

功能

refresh = function() {
    itemsService.getItems().then(function(d) {
        $scope.items= d;
      });
}

服务

app.factory('itemsService', function($http) {

    var itemsService = {
        getItems: function() {
            return $http.get('items.json')
                .then(
                    function (response) {
                        return response.data;
                    }
                );
        }
    };

    return itemsService;
});

我还阅读了$watch()并尝试在这种情况下使其工作,但似乎没有任何区别:

$scope.$watch('itemsService.getItems()', function(d) {
    $scope.items = d;
}, true);

1 个答案:

答案 0 :(得分:0)

这可能就是你要找的东西 Angular JS - listen or bind $http request

您可以在请求结束时调用您的函数。

您可以使用拦截器来执行此操作

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

});