Может кто-нибудь помочь мне с 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>
Если ваш пейджинг выполняется на стороне сервера, сортировка должна выполняться на стороне сервера.
Угловой будет только сортировать страницу данных, которые у нее есть.
Либо реализуйте сортировку на стороне сервера, либо извлекайте все данные и реализуйте клиентскую страницу подкачки.
$scope.sort_by
находится на стороне клиента в ваших примерах кода. Не на стороне сервера.