这是场景:
我正在使用带有 Angular JS 和 Boostrap UI 的 ASP.NET MVC 站点。我有一个动态 ul 列表,由通过对 AngularJS 的控制器调用馈送的数据填充,通过输入搜索框对该列表进行过滤。该列表还通过分页(UI Bootstrap 控件)进行控制,我已将其设置为每页显示 100 个左右项目列表的 10 个结果。当用户在搜索框中输入时,此列表会被过滤,但是我希望分页也能更新,因此请考虑以下示例:
该列表有 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);
};
});