据我所知,在AngularJS中,过滤器名为" limitTo"用于限制数据。
假设我们有100条记录,我们将数据限制为10条记录 limitTo过滤器。
现在我如何显示剩余的90条记录。 我需要在底部有一些下一个和上一个按钮 当我点击它时,应该向我展示接下来的10条记录。
如何在不影响任何性能的情况下实现这一目标。 如果可以,请提供代码。谢谢...... :-)
答案 0 :(得分:1)
根据limitTo docs,有start
和limit
{{ limitTo_expression | limitTo : limit : begin}}
因此,您可以根据以下简单示例对这些参数使用范围变量:
<p ng-repeat="item in items|limitTo:limit:start">{{item.name}}</p>
<button ng-click="next()" ng-if="start < items.length-10">Next</button>
<button ng-click="prev()" ng-if="start >0">Prev</button>
JS
$scope.start = 0;
$scope.limit = 10;
$scope.items = [/* some data*/];
$scope.next = function() {
incrementLimit(true)
}
$scope.prev = function() {
incrementLimit(false)
}
function incrementLimit(up) {
if (up) {
($scope.start <= ($scope.items.length - $scope.limit)) ? $scope.start += 10: $scope.start = 0;
} else {
$scope.start > 10 ? $scope.start -= 10 : $scope.start = 0;
}
}
的 DEMO 强>
答案 1 :(得分:0)
limitTo
过滤器有一个可选的启动参数。
设置变量,例如$scope.start = 0
然后,您可以将过滤器设置为limitTo : 10 : start
,当您点击该按钮时,只需将$scope.start
增加10。
答案 2 :(得分:0)
根据documentation,如果你使用它是自动的 -
{{ limitTo_expression | limitTo : limit : begin}}
你可以尝试这个例子 -
var todos = angular.module('todos', ['ui.bootstrap']);
todos.controller('TodoController', function($scope) {
$scope.filteredTodos = []
,$scope.currentPage = 1
,$scope.numPerPage = 10
,$scope.maxSize = 5;
$scope.makeTodos = function() {
$scope.todos = [];
for (i=1;i<=1000;i++) {
$scope.todos.push({ text:'todo '+i, done:false});
}
};
$scope.makeTodos();
$scope.numPages = function () {
return Math.ceil($scope.todos.length / $scope.numPerPage);
};
$scope.$watch('currentPage + numPerPage', function() {
var begin = (($scope.currentPage - 1) * $scope.numPerPage)
, end = begin + $scope.numPerPage;
$scope.filteredTodos = $scope.todos.slice(begin, end);
});
});
<link data-require="bootstrap-css@2.3.2" data-semver="2.3.2" rel="stylesheet" href="//netdna.bootstrapcdn.com/twitter-bootstrap/2.3.2/css/bootstrap-combined.min.css" />
<script data-require="angular.js@1.1.5" data-semver="1.1.5" src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
<script data-require="angular-ui-bootstrap@0.3.0" data-semver="0.3.0" src="http://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-0.3.0.min.js"></script>
<h1>Todos</h1>
<h4>{{todos.length}} remain</h4>
<ul>
<li ng-repeat="todo in filteredTodos">{{todo.text}}</li>
</ul>
<div data-pagination="" data-num-pages="numPages()"
data-current-page="currentPage" data-max-size="maxSize"
data-boundary-links="true">
</div>
可在此处找到可运行代码 -