AngularJs сортировка по всем страницам

0

Может кто-нибудь помочь мне с angularjs сортировки по всем страницам, когда я использую разбиение на страницы и сортировку на стороне сервера.

Я использую ui-bootsrap для разбивки на страницы; Код прилагается.

Моя сортировка происходит только один раз в порядке возрастания. Любая идея, как сортировать в обоих направлениях? т.е. im передавая sortBy как +property для сортировки, мне нужно переключить свойство с - infront после его сортировки в порядке возрастания. Любая директива для управления этим переключением?

$scope.maxSize = 5;
 $scope.currentPage = 1;
 $scope.itemsPerPage = 5;

//This method gets called each time the page is loaded or move to next page

        $scope.isResultExist = function (list) {
            $scope.list = list;
            return  $scope.populateResult();
        };

  $scope.populateResult = function () {
            if ($scope.list != undefined) {
                $scope.totalItems = $scope.list.length;
                var begin = (($scope.currentPage - 1) * $scope.itemsPerPage)
                    , end = begin + $scope.itemsPerPage;

                $scope.result = $scope.list.slice(begin, end);
            }
        };

$scope.sort_by = function (sortBy) {
        if ($scope.list != undefined) {
            var sortOrder = 1;
            $log.debug("**************list : " + $scope.list);
            $scope.list.sort(function (a, b) {
                for (var k = 0; k < $scope.list.length; k++) {
                    var valueA = a[sortBy];
                    var valueB = b[sortBy];
                    var result = (valueA < valueB) ? -1 : (valueA > valueB) ? 1 : 0;
                    return result * sortOrder;
                }
            });
            $scope.populateResult();
        }
    };
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.3/angular.min.js"></script>
<th class="source"><a href="#" ng-click="sort_by('source')" data-toggle="tooltip" bs-tooltip
                                          data-title="sort by Source ID">Source ID<i class="fa fa-sort"></i>
                    </a></th>

  <tr data-ng-repeat="keyRingItem in result ">

Pagination:

 <pagination items-per-page="itemsPerPage" total-items="totalItems" ng-model="currentPage"
                                max-size="maxSize" class="pagination-sm" boundary-links="true">
                    </pagination>
Теги:
sorting

1 ответ

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

Если ваш пейджинг выполняется на стороне сервера, сортировка должна выполняться на стороне сервера.

Угловой будет только сортировать страницу данных, которые у нее есть.

Либо реализуйте сортировку на стороне сервера, либо извлекайте все данные и реализуйте клиентскую страницу подкачки.

  • 0
    Моя функция сортировки находится на стороне сервера. Контроллер sort_by (): var sortOrder = 1; $ scope.list.sort (function (a, b) {for (var k = 0; k <$ scope.list.length; k ++) {var valueA = a [sortBy]; var valueB = b [sortBy]; var результат = (значение A <значение B)? -1: (значение A> значение B)? 1: 0; вернуть результат * sortOrder;}}); $ Scope.populateResult (); // создаем новый отсортированный массив для отображения на странице}};
  • 0
    Функция сортировки $scope.sort_by находится на стороне клиента в ваших примерах кода. Не на стороне сервера.

Ещё вопросы

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