gpt4 book ai didi

javascript - 使用 ng-repeat 和过滤器,如何判断哪些项目是可见的?

转载 作者:技术小花猫 更新时间:2023-10-29 12:38:29 25 4
gpt4 key购买 nike

我有一个对象数组,我使用 ng-repeat 在我的 Angular 应用程序中显示这些对象。我正在使用 filter 和搜索输入的值过滤掉项目。它按预期工作。但是,我有一个“全选”/“取消全选”选项,我只想选择列表中的可见项(满足当前搜索条件的项)。

如果不在我的 Controller 中执行相同的逻辑(即使用 indexOf 我的每个对象的搜索值),我如何知道哪些项目当前被 ng-repeat< 过滤掉了/过滤器?

我的看法:

<input type="text" ng-model="searchValue">
<input type="checkbox" ng-model="checkAll" ng-change="toggleAll()">

<tr ng-repeat="item in items | filter:searchValue">
<td>{{item.id}}</td>
<td>{{item.name}}</td>
</tr>

我的 Controller 中的一个函数:

$scope.toggleAll() {
for(var i in $scope.items){
// how can I tell if this item is filtered out in the view?
}
}

为了简单起见,我在这里大大简化了我的代码示例,因为这个问题不需要更多细节。有什么方法可以实现我的想法,还是我需要再次执行“搜索”?

最佳答案

您可以将过滤后的数组绑定(bind)到 View 中的另一个范围变量,然后在 Controller 中访问它。

查看:

<tr ng-repeat="item in filteredItems = (items | filter:searchValue)">
...
</tr>

Controller :

$scope.toggleAll = function () {
angular.forEach($scope.filteredItems, function (item) {
// do stuff
})
}

关于javascript - 使用 ng-repeat 和过滤器,如何判断哪些项目是可见的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30718300/

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