gpt4 book ai didi

javascript - For 循环遍历自定义过滤器结果

转载 作者:行者123 更新时间:2023-12-03 02:07:13 25 4
gpt4 key购买 nike

我有一个应用程序列表,我有一个自定义过滤器用于获取指定字段的唯一值。重复选中每个唯一值的复选框来过滤表。

我需要使用唯一过滤器返回的值进行循环。这样我就可以有一个按钮来取消选中 ng-repeat 中返回的所有复选框。

我可以正常工作,但它会循环遍历所有表值(数千个),而不仅仅是唯一值。

标记:

    <div ng-repeat="cat in applications | unique : 'Category'">
<label>
<input name="abc" type="checkbox" ng-model="$parent.FCategory[cat.Category]" ng-value="cat" ng-init="$parent.FCategory[cat.Category]=true">{{ cat.Category }}
</label>
</div>

<input type="button" ng-click="uncheckAll()">Untick

JS,独特的过滤器:

App.filter('unique', function () {
return function (collection, keyname)
{
var output = [],
keys = [];
angular.forEach(collection, function (item) {
var key = item[keyname];
if (keys.indexOf(key) === -1) {
keys.push(key);
output.push(item);
}
});
return output;
};
});

JS,取消选中所有功能:

 $scope.uncheckAll = function () {
for (var i = 0; i < $scope.applications.length; i++) {
var item = $scope.applications[i].Category;
$scope.FCategory[item] = false;

}
};

问题是 'for (var i = 0; i < $scope.applications.length; i++) {' 对每个记录循环,我不知道如何拥有 '$scope.applications.length'仅适用于唯一的过滤结果。

我能想到的最好的(但不起作用)是......

$scope.uncheckAll = function () {
var a = $scope.applications;

for (var i = 0; i < $filter('unique')(a,'Category').length; i++) {
var item = $scope.applications[i].Category;
$scope.FCategory[item] = false;

}
};

最佳答案

解决此问题的一种方法是将过滤结果存储在新的作用域变量 (uniqueApplications) 中,然后将其传递到 uncheckAll 函数中:

<div ng-repeat="cat in (uniqueApplications = (applications | unique : 'Category'))">
<label>
<input name="abc" type="checkbox" ng-model="$parent.FCategory[cat.Category]" ng-value="cat" ng-init="$parent.FCategory[cat.Category]=true">{{ cat.Category }}
</label>
</div>

<input type="button" ng-click="uncheckAll(uniqueApplications)">

您还需要修改 uncheckAll 函数:

$scope.uncheckAll = function (list) {
for (var i = 0; i < list.length; i++) {
var item = list[i].Category;
$scope.FCategory[item] = false;

}
};

关于javascript - For 循环遍历自定义过滤器结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49752986/

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