ng-repeat первая и последняя страница с фильтром limitTo - PullRequest
0 голосов
/ 03 января 2019

Используя angularjs 1.3 здесь:

Я использую лимит в моей строке таблицы, как показано ниже:

<tr ng-repeat="r in table.rows | dataLimitTo:limit:start">
  <td>{{r.id}}</td>
  <td>{{r.name}}</td>  
</tr>

 <div class="form-group" ng-if="table.rows.length>100">
    <button class="btn btn-primary"  type="button" ng-click="prev()">Prev</button>
    <button class="btn btn-primary " type="button" ng-click="next()">Next</button>
</div>

У меня много данных, из-за которых я ограничиваю 100 на страницу. Выше предыдущего и следующего нажатия кнопки помогают мне перемещаться по ч / б страницам.

Также выше dataLimitTo - мой пользовательский фильтр (ограничение не доступно в угловой версии 1.3.4)

CTApp.filter('dataLimitTo', function () {
    return function (input, limit, begin) {
        return input.slice(begin, begin + limit);
    };
});

А у меня в контроллере:

$scope.start = 0;
$scope.limit = 100;

$scope.next = function () {
    incrementLimit(true)
}
$scope.prev = function () {
    incrementLimit(false)
}

function incrementLimit(up) {
    if (up) {
        ($scope.start <= ($scope.table.rows.length - $scope.limit)) ? $scope.start += 100 : $scope.start = 0;
    } else {
        $scope.start > 100 ? $scope.start -= 100 : $scope.start = 0;
    }
}

Вышеупомянутый код работает нормально, и я могу перемещать ч / б страницы, используя кнопки «Предыдущая» и «Следующая»

Я также хотел иметь 2 кнопки для первой и последней страницы. Если они нажмут кнопку первой страницы, они вернутся и увидят первую страницу строк, а если они нажмут кнопку последней страницы, они увидят страницу строк.

Это выполнимо с кодом, который у меня есть выше? Какие изменения мне нужно сделать.

Извините, в данный момент я не ищу других сторонних решений.

1 Ответ

0 голосов
/ 04 января 2019

Чтобы перейти на первую страницу, установите начальный ноль, т. Е. $scope.start=0

Я смог сделать последнюю страницу как:

$scope.start = Math.floor($scope.table.rows.length / $scope.limit) * 100;

Должно быть:

$scope.start = Math.floor($scope.table.rows.length / $scope.limit) * $scope.limit;

С другой стороны:

$scope.start = lastPageStart($scope.table.rows.length, $scope.limit)

function lastPageStart (len, limit) {
    return len - (len % limit);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...