使用AngularJs进行分页的复合过滤
使用AngularJs进行分页的复合过滤
我正在开发一个Angular应用程序,我试图将复合过滤与分页结合使用。将有一个带有x个条目的表格,每行有三列。我在每列上方都有一个输入框,用户可以根据输入的文本对列进行过滤。这些过滤器通过组合来缩小结果范围以得到最佳结果,但在我的用例中,可能仍然有太多结果无法在一页上显示,因此我尝试使用分页。
表格主体如下所示:
{{person.name}} {{person.age}} {{person.state}}
我遇到的棘手问题是如何使分页与应用的过滤器一起工作。我看到了一个例子,作者在一个单一的搜索字段上使用了$watch,并且仍然可以管理分页。通过研究,我还了解到可以使用$watchCollection,但我不确定如何实现它。
$scope.$watchCollection('[nameFilter, ageFilter, stateFilter]', function(newValues) { //不确定在这里该做什么。 console.debug(newValues); $scope.filtered = '';; //实际上它应该等于现在经过3个过滤器过滤后的人员组 $scope.noOfPages = Math.ceil($scope.filtered.length/$scope.itemsPerPage); });
在这种情况下,监视器是否是最佳选择?我有一个正在工作的示例,但仍然需要一些关于分页的指导。我有一个问题,就是我不确定如何使分页仅应用于数据列表。我看到了其他示例并进行了模仿,但我认为过滤器可能会搞乱它(不确定)。感谢任何帮助。
在这个问题中,出现的原因是需要在AngularJS中实现带有分页的复合过滤。解决方法是将过滤器绑定到分页上,这样AngularJS会处理所有事情,而不需要在控制器中编写额外的代码。
解决方法如下:
1. 使用limitTo
过滤器处理分页,将以下代码添加到HTML中的数据表格中:
{{person.name}} {{person.age}} {{person.state}}
2. 在页面底部添加分页控件,使用uib-pagination
指令,并将以下代码添加到HTML中:
3. 更新代码示例中的plunker链接,以查看整个实现的代码。
原文链接:[https://plnkr.co/edit/5bW3XV3eEmomOtHJWW7x?p=preview](https://plnkr.co/edit/5bW3XV3eEmomOtHJWW7x?p=preview)