我的过滤方式如下:表示如果我选择multiple checkboxes
(例如:Name
中的一个复选框和Description
下拉列表中的一个复选框),那么相应的匹配数据就会很好Name
和Description
列的列表,以及其他选项的类似内容(例如Description
和Field4
以及Field4
和名称dropdowns
)。
如果我从所有下拉列表中选中所有三个复选框(例如name 1
,description 1
和field4 1
,那么匹配的数据就会好于Name
,Description
和Field4
列。
但我现在需要的是:数据不是使用单个复选框或单个复选框选择进行过滤(例如:如果我选择任何Name
或Description
或field4
下拉复选框,然后所选的复选框相关数据不会出现)。所以我可以用三种情况过滤数据:单选,任意两个下拉复选框选择,所有三个下拉复选框选择。
下面给出了代码并创建了Fiddle。
我该怎么做?请帮助我,并提前致谢。
答案 0 :(得分:1)
我更新了一些代码以使其正常工作。
$scope.filterItems = function(item) {
if ($scope.pagedItems.name !== undefined && $scope.pagedItems.description !== undefined && $scope.pagedItems.name !== "false" && $scope.pagedItems.description !== "false") {
if(item.name === $scope.pagedItems.name && item.description === $scope.pagedItems.description) return true;
} else {
if (item.name === $scope.pagedItems.name) return true;
if (item.description === $scope.pagedItems.description) return true;
if ((item.description.indexOf($scope.pagedItems.description) > -1 &&
$scope.pagedItems.description !== '')) return true;
}
return false;
}
HTML:
<div>
<div class="dropdown">
<a href="#" data-toggle="dropdown" class="btn btn-default dropdown-toggle">Select Name<b class="caret"></b></a>
<ul class="dropdown-menu">
<li><input type="checkbox" data-ng-model='pagedItems.name' data-ng-true-value='name 1' data-ng-false-value='false' /> name1</li>
<li><input type="checkbox" data-ng-model='pagedItems.name' data-ng-true-value='name 2' data-ng-false-value='false' /> name2</li>
<li><input type="checkbox" data-ng-model='pagedItems.name' data-ng-true-value='name 3' data-ng-false-value='false' /> name3</li>
</ul>
</div><br><br>
<div class="dropdown">
<a href="#" data-toggle="dropdown" class="btn btn-default dropdown-toggle">Select Description <b class="caret"></b></a>
<ul class="dropdown-menu">
<li><input type="checkbox" data-ng-model='pagedItems.description' data-ng-true-value='description 1' data-ng-false-value='false' /> description 1</li>
<li><input type="checkbox" data-ng-model='pagedItems.description' data-ng-true-value='description 2' data-ng-false-value='false' /> description 2</li>
</ul>
</div>
</div>
通过从nameOne更改为name(对于描述相同),我能够简化你的if语句并使组合匹配工作没有巨大的if语句。
我更新了你的小提琴,你可以找到它here