Я работаю над приложением 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 для сброса нумерации страниц, что нарушило функционал поиска в библиотеке