gpt4 book ai didi

javascript - 如何在 Angular 中获取过滤后的 ngRepeat 数组的长度?

转载 作者:行者123 更新时间:2023-11-29 22:03:58 27 4
gpt4 key购买 nike

我正在尝试在我的 Angular 应用程序中实现分页。我有 1000 多本书的数组,我希望我的 currentPage/totalPages 变量根据我的 filtered ngRepeat 进行更新。

这是我当前的 Angular 代码:

function Books($scope, $http, $rootScope){
$scope.books = [1000+ books];
$scope.filteredbooks = [];

$scope.numberOfPages = function(){
return Math.ceil($scope.filteredbooks.length / $scope.pageSize);
}
}

我的下一个/上一个按钮:

<button ng-disabled="currentPage == 0" ng-click="currentPage=currentPage-1">
Previous
</button>
{{currentPage+1}}/{{numberOfPages()}}
<button ng-disabled="currentPage >= data.length/pageSize - 1"
ng-click="currentPage=currentPage+1">
Next
</button>

这是我的 ngRepeat:

<tr ng-repeat="book in (filteredbooks = books | filter: search) | 
orderBy: 'title' | startFrom: currentPage * pageSize |
limitTo: pageSize">
{{book.title}}
</tr>

我的问题是 ngRepeat 中的 filteredbooks 没有设置我的 $scope.filteredbooks,所以我的总页数长度不是吨更新。有办法做到这一点吗?

当搜索词更改时,是否还有一个事件或指令可以 Hook 以将我的 $scope.currentPage 设置为 0?

提前致谢!

编辑:这是带有搜索框的首选示例的 fiddle :http://jsfiddle.net/4LRbN/

最佳答案

您可以使用一个函数来告诉页面从哪里开始。

DEMO

在 Angular 中,您已经有了一个内置函数 limitTo,所以我们只需添加 startFrom 函数,这样它就可以跟踪结果的位置。

{{(data.length}} 将为您提供结果总数。{{(data|filter:searchterm).length}} 将为您提供过滤结果的数量。

已更新 fiddle .

我还建议您查看 Angular 维基上的示例 fiddle here .

关于javascript - 如何在 Angular 中获取过滤后的 ngRepeat 数组的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22005322/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com