Вот сценарий:
Я использую сайт ASP.NET MVC с Angular JS и пользовательским интерфейсом Boostrap. У меня есть динамический список ul, заполненный данными, поступающими через вызов контроллера в AngularJS, фильтрующий этот список через окно поиска ввода. Список также управляется с помощью нумерации страниц (управление начальной загрузкой пользовательского интерфейса), которую я настроил для отображения 10 результатов на странице для списка примерно из 100 элементов. Этот список фильтруется по мере того, как пользователь вводит в поле поиска, однако я бы хотел, чтобы нумерация страниц также обновлялась, поэтому рассмотрим следующий пример:
Список содержит 10 страниц элементов (100 элементов), пользователь вводит некоторый текст в поле поиска ввода, которое фильтрует список до 20 или около того элементов, поэтому нумерация страниц должна быть обновлена с 10 страниц до двух страниц.
Я полагаю, что где-то должна быть настройка $watch, возможно, в элементах списка после того, как она была отфильтрована, а затем обновить количество страниц разбивки на страницы, однако я новичок в AngularJS, поэтому может кто-нибудь объяснить мне, как это можно сделать?
Большое спасибо. Я разместил свой код ниже:
<div data-ng-app="dealsPage">
<input type="text" data-ng-model="cityName" />
<div data-ng-controller="DestinationController">
<ul>
<li data-ng-repeat="deals in destinations | filter: cityName |
startFrom:currentPage*pageSize | limitTo:pageSize">{{deals.Location}}</li>
</ul>
<br />
<pagination rotate="true" num-pages="noOfPages" current-page="currentPage"
max-size="maxSize" class="pagination-small" boundary-links="true"></pagination>
</div>
var destApp = angular.module('dealsPage', ['ui.bootstrap', 'uiSlider']);
destApp.controller('DestinationController', function ($scope, $http) {
$scope.destinations = {};
$scope.currentPage = 1;
$scope.pageSize = 10;
$http.get('/Deals/GetDeals').success(function (data) {
$scope.destinations = data;
$scope.noOfPages = data.length / 10;
$scope.maxSize = 5;
});
});
destApp.filter('startFrom', function () {
return function (input, start) {
start = +start; //parse to int
return input.slice(start);
};
});