用angularjs过滤来自API的结果

Filter results from API with angularjs

本文关键字:API 结果 angularjs 过滤      更新时间:2023-09-26

我正在用Angular的API接收数据,并试图过滤min_price小于例如50$的酒店的结果!

$http.get($rootScope.baseurl + 'api/hotels/', {
        params: {
            page_size: $scope.page_size,
            page: $scope.page,
            goingTo: goingTo,
            ordering: $scope.sortBy,
            star: $scope.filter.star,
            min_price: ????
        }}).then(
        function(data, status, headers, config) {
            $scope.Hotels = data.data.results;
            $scope.count = data.data.count;
            $scope.loading = false;
            PageService.setContentReady();
        },
        function(data, status, headers, config) {
            $scope.loading = false;
            PageService.contentStatus = 'ready';
        }
    );

如何显示50美元以下的酒店

试着把这个添加到语句的末尾:

// Assuming you're doing some kind of promise resolution;
let deferred = $q.defer();
.success((data) => {
  deferred.resolve(data);
});

结果数据,你可以过滤:

// assume 'data' is your real resolved data;
let filteredData = data.filter((hotel) => hotel.min_price < 50);

这是ES6的语法,但你明白了要点。

在下面查找您更新的代码

$http.get($rootScope.baseurl + 'api/hotels/', {
    params: {
        page_size: $scope.page_size,
        page: $scope.page,
        goingTo: goingTo,
        ordering: $scope.sortBy,
        star: $scope.filter.star,
        min_price: 50
    }
}).then(
    function(data, status, headers, config) {
        $scope.Hotels = data.data.results;
        $scope.Hotels = $scope.Hotels.filter(function(hotel){ return hotel.min_price < 50}); //filter hotels
        $scope.count = data.data.count;
        $scope.loading = false;
        PageService.setContentReady();
    },
    function(data, status, headers, config) {
        $scope.loading = false;
        PageService.contentStatus = 'ready';
    }
);