UIB-нумерация страниц не правильно корректируется при добавлении новой строки - PullRequest
0 голосов
/ 11 июня 2018

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

Мне удалось добавить и удалить из таблицы, и если есть 3 или менее людей, они отображаются правильно.Если я добавлю четвертого человека, я бы ожидал, что элемент управления нумерацией страниц перейдет на 2-ю страницу и в верхний ряд.Хотя, похоже, что это происходит, элемент управления нумерацией страниц покажет «2» для возможного номера страницы, но 4-й человек показывает на первой странице .... все остальные добавленные также переходят на первую страницу.Кажется, что номера страниц внизу не работают - страница не меняется.Я обновляю значение текущей страницы, но не похоже, что оно отражается.

Ниже приведена часть моего просмотра.Есть некоторые дополнительные части, которые на самом деле не имеют отношения к подкачке.Я использую их, чтобы добраться до нужной строки, чтобы предоставить пользователю поле ввода для ввода имени сотрудника, если была нажата кнопка «Добавить инициативу».Как только они находят, кого ищут, значения просто отображаются.

<table class="table" >
  <tbody ng-repeat="boLead in components[selectedRow].boleads " pagination-id="boleads" >
    <tr >                                   
        <td id="leadId" >{{boLead.boLeadId}}</td>
        <td ng-show="(inserted == boLead && newLead) ">
            <input type="text" class="form-control" ng-model="boLead.boLead" ng-model-options='{ debounce: 800 }' ng-change="searchEmployee(boLead.boLead)" /> 
                <table class="table table-hover table-bordered" ng-show="employees.length">
                    <tr>
                        <th>Employee ID</th>
                        <th>Employee Name</th>
                    </tr>
                    <tr ng-repeat="result in employees" ng-click="pickEmployee(result, boLead)">
                        <td>{{result.user_id}}</td>
                        <td>{{result.name}}</td>
                    </tr>
                </table>
        </td>
        <td ng-show="(inserted != boLead && !editq  || (editq && editl != ($index+(3*(pagination.current-1)))) )">{{boLead.boLead}}</td>
        <td ng-if="mode == 'edit'">
            <select  class="form-control input-md" ng-model="boLead.forwardONS" >
                <option>Yes</option>
                <option>No</option>
            </select>
        </td>
        <td ng-if="mode == 'edit' && (!checkNewLead(boLead) && !editq)">
            <button type="button" ng-click="removeLead($index+(3*(pagination.current-1)))" class="btn btn-danger fa fa-trash"> Delete</button>
        </td>
        <td ng-if="mode == 'view'" ng-bind-html="boLead.forwardONS"></td>
    </tr>
  </tbody>
</table>
<uib-pagination  previous-text="&lsaquo;" next-text="&rsaquo;" ng-model="pagination.current"  class="pagination-sm" ng-if="pagination.totalLeads > 3" items-per-page="3" total-items="pagination.totalLeads" boundary-link-numbers="true"></uib-pagination>

Контроллер: это часть для добавления человека в список

    $scope.addLead = function() {
    $scope.inserted = {
        prgGuid: $scope.components[$scope.selectedRow].prgGuid,
        componentId: $scope.components[$scope.selectedRow].componentId,
        boLeadId: '',
        boLead : '',
        forwardONS: ''
    };

    if (typeof $scope.components[$scope.selectedRow].boleads == 'undefined') {

        $scope.components[$scope.selectedRow].boleads = new Array($scope.inserted);
    } else {

        $scope.components[$scope.selectedRow].boleads.push($scope.inserted);
    }

    $scope.newLead = true;
    $scope.editq = true;
    $scope.editl = $scope.components[$scope.selectedRow].boleads.length-1;
    if ($scope.components[$scope.selectedRow].boleads.length > 3) {
        var pg = Math.ceil($scope.components[$scope.selectedRow].boleads.length / 3);
        $scope.pagination.current = pg;
    }
    $scope.pagination.totalLeads = $scope.components[$scope.selectedRow].boleads.length;
};

Когда я шагаючерез это $ scope.pagination.current = pg;обновляется правильно с текущей страницей.Например, после добавления 4-го человека оно становится равным 2. Это ng-модель в элементах управления нумерацией страниц, но не похоже, что нумерация страниц прослушивается, поскольку экран не изменяется, чтобы показать новую строку.но вместо этого все четыре показывают.

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

1 Ответ

0 голосов
/ 11 июня 2018

Кажется, я смог исправить свою проблему, посмотрев больше примеров ... Я добавил кусок в таблицу, и он, кажется, работает именно так, как я хотел ...

Я изменил эту строку:

 <tbody ng-repeat="boLead in components[selectedRow].boleads " pagination-id="boleads" >

до:

<tbody ng-repeat="boLead in components[selectedRow].boleads.slice(((pagination.current-1)*3), ((pagination.current)*3)) " pagination-id="boleads" >
...