Получение числа всех элементов в коллекции из PagedList (веб-API) с AngularJs

0

Я пытаюсь выяснить, как получить количество всех элементов в коллекции от сервера, чтобы передать это число в total-items, чтобы я мог перемещаться между всеми данными, а не только с первой страницей элементов.

Мой код контроллера AngularJS -

    $scope.gamesPerPage = 5;    
    $scope.currentPage = 1;
    $scope.totalGames = 0;
    getResultsPage($scope.currentPage, $scope.gamesPerPage);

    $scope.pageChanged = function (pageNumber, pageSize) {
        getResultsPage(pageNumber, pageSize);
    };   

    function getResultsPage(pageNumber, pageSize) {
        gamesFactory.getGames(pageNumber, pageSize)
        .success(function (response) {
            $scope.games = response;
            $scope.totalGames = response.Count; //Returns the number of PagedList elements, 5 in my case
        })        
    };

Заводское обслуживание -

    var urlBase = '/api/games/'; 
    factory.getGames = function (pageNumber, pageSize) {
        return $http.get(urlBase + pageNumber + '/' + pageSize);
    };

И Web APi 2, метод Get -

        [Route("api/games/{pageNumber}/{pageSize}")]
        public IQueryable<Game> GetGames(int pageNumber, int pageSize)
        {            
            List<Game> games = db.Games.ToList();
            PagedList<Game> pagedList = new PagedList<Game>(games, pageNumber, pageSize);
            return pagedList.AsQueryable();
        }
Теги:
rest

1 ответ

1
Лучший ответ

Вы можете обернуть свой ответ в объект, который будет содержать общее количество игр и выложенную подборку игр.

Вы могли бы сделать что-то вроде этого:

public class GamesHolder
{
    public int TotalCount { get; set; }
    public IEnumerable<Game> PagedGames { get; set; }
}

Следовательно, ваша API-точка должна вернуться:

[Route("api/games/{pageNumber}/{pageSize}")]
public GamesHolder GetGames(int pageNumber, int pageSize)
{            
    List<Game> games = db.Games.ToList();
    return new GamesHolder()
    {
       TotalCount = games.Count,
       PagedGames = new PagedList<Game>(games, pageNumber, pageSize)
    }
}

Кроме того, внутри вашей функции Angular getResultsPage вы сможете получить объект:

function getResultsPage(pageNumber, pageSize) {
    gamesFactory.getGames(pageNumber, pageSize)
    .success(function (response) {
        $scope.games = response.pagedGames;
        $scope.totalGames = response.totalCount;
    })        
};

Ещё вопросы

Сообщество Overcoder
Наверх
Меню