Сбросить нумерацию страниц, если во время фильтрации изменилась итоговая сумма - PullRequest
0 голосов
/ 23 января 2019

Я работаю над приложением Angular JS и использую md-таблицу для разбивки на таблицы данных. Функция фильтра библиотеки работает нормально с текстовым полем поиска, но при поиске не на первой странице возникает проблема.

Результаты поиска всегда отображаются на 1-й странице, когда пользователь выполняет поиск с любой другой страницы. Я решил настроить прослушиватель $ Watch на тексте поиска, чтобы сбросить номер страницы на один при каждом поиске.

Чтобы заставить $ Watch listener работать, я изменил ng-модель как объект ниже. Это приводит к нарушению функциональности поиска. Любая помощь в решении этой проблемы высоко ценится. Ниже мой скрипт контроллера

   $scope.searchPhrase={ name :"" }; 
  $scope.query = {serverOrder:'serverName',
                  processOrder:'processName',
                  limit: 5,
                  page: 1,
                  multiSelect: false};
   $scope.$watch("searchPhrase.name", function(newValue,oldValue) { 
                console.log("Listener working");
                $scope.query.page = 1;
              console.log($scope.query.page);
                    });

Кусок шаблона html.

    <input  ng-model="searchPhrase.name" style="color:white;">
    <tr md-row md-select="serverToConfigure" ng-repeat="s in $parent.servers  | filter :searchPhrase.name  | orderBy: query.serverOrder | limitTo: query.limit : (query.page -1) * query.limit ">
                        <td md-cell>{{s.serverId}}</td>
                        <td md-cell>{{s.serverName}}</td>
                        <td md-cell>{{s.environmentName}}</td>
                        <td md-cell>{{s.lastUpdated | date :"short"}}</td>
                        <td md-cell><md-icon ng-style="{'color': generateStatusColor(s.statusColor)}">{{getIconByColor(s.statusColor)}}</md-icon></td>
                        <td md-cell><md-button class="md-fab md-mini" style="background-color:#86bc25" ng-click="toggleConfigView('config');setServerToConfigure(s)" ><md-icon>build</md-icon> <md-tooltip >configure</md-tooltip></md-button></td>
                      </tr>
                    </tbody>
                  </table>
 </md-table-container>
    <md-table-pagination style="color:white" md-limit="query.limit" md-limit-options="[5, 10, 15]" md-page="query.page" md-total="{{$parent.servers.length}}"  md-page-select></md-table-pagination>

Ранее поиск работал с приведенной ниже конфигурацией, при этом проблема в результатах поиска всегда отображалась на первой странице.

<input  ng-model="searchPhrase" style="color:white;">

Изменил ng-модель "searchPhrase" на объявление объекта и настроил прослушиватель $ watch для сброса нумерации страниц, что нарушило функционал поиска в библиотеке

...