Javascript 角度-仅当未选中时,如何显示结果
我有一些代码可以过滤并显示复选框的结果。选中所有复选框时,将显示所有结果;选中复选框时,将仅显示选定的框 但是,我尝试在复选框未选中时显示所有结果,如果复选框已选中,则不会显示特定结果,同时继续显示未选中的框 controller.jsJavascript 角度-仅当未选中时,如何显示结果,javascript,html,angularjs,checkbox,angularjs-filter,Javascript,Html,Angularjs,Checkbox,Angularjs Filter,我有一些代码可以过滤并显示复选框的结果。选中所有复选框时,将显示所有结果;选中复选框时,将仅显示选定的框 但是,我尝试在复选框未选中时显示所有结果,如果复选框已选中,则不会显示特定结果,同时继续显示未选中的框 controller.js function AdvisorListCtrl( $location, $scope, db) { $scope.orderProp = 'number'; $scope.courseCheckboxes = {}; $scope.t
function AdvisorListCtrl( $location, $scope, db) {
$scope.orderProp = 'number';
$scope.courseCheckboxes = {};
$scope.teacherCheckboxes = {};
$scope.courses = db.courses.query({order:$scope.orderProp, name:$scope.query});
function getChecked(obj){
var checked = [];
for(var key in obj)
if(obj[key]) checked.push(key);
return checked;
}
$scope.searchFilter = function(row){
var courChecked = getChecked($scope.courseCheckboxes);
var teachChecked = getChecked($scope.teacherCheckboxes);
if (courChecked.length == 0 && teachChecked.length == 0)
return true;
else {
if ($scope.courseCheckboxes[row.name])
return true;
else {
return row.teacher.split(/,\s*/).some(function(teach){
return $scope.teacherCheckboxes[teach];
});
}
}
}
}
html
按类筛选
{{course.name}
我误解了你的问题,所以我重新编辑了答案
当searchFilter(记录)返回false时,记录被过滤掉(不显示)
这里是一个版本的过滤器,它应该执行与之前相反的操作(隐藏选中的商家和包含选中品牌的商家)。希望这有帮助
html
<div ng-repeat="record in records | filter: searchFilter">
{{record.Description}}
{{record.Description}}
js
$scope.searchFilter = function(row){
var mercChecked = getChecked($scope.merchantCheckboxes);
var brandChecked = getChecked($scope.brandCheckboxes);
if(mercChecked.length == 0 && brandChecked.length == 0)
return true;
else{
if($scope.merchantCheckboxes[row.MerchantName]){
return false; // <----------------- changed here true to false
} else {
// changed here adding !
return !row.BrandList.split(/,\s*/).some(function(brand){
return $scope.brandCheckboxes[brand];
});
}
}
};
$scope.searchFilter=函数(行){
var merchecked=getChecked($scope.merchantcheckboxs);
var brandChecked=getChecked($scope.brandcheckbox);
if(merchecked.length==0&&brandChecked.length==0)
返回true;
否则{
if($scope.merchantcheckboxs[row.MerchantName]){
return false;//如果不知道课程
是什么样子,也不知道用户中的搜索过滤器
,很难说出您想问什么。如果您可以在这个plunker上复制您的问题:找到解决方案会容易得多。对不起,我是基于这个JSFIDLE,类似这样的:但是仅显示选中的框。它将隐藏选中的框。
$scope.searchFilter = function(row){
var mercChecked = getChecked($scope.merchantCheckboxes);
var brandChecked = getChecked($scope.brandCheckboxes);
if(mercChecked.length == 0 && brandChecked.length == 0)
return true;
else{
if($scope.merchantCheckboxes[row.MerchantName]){
return false; // <----------------- changed here true to false
} else {
// changed here adding !
return !row.BrandList.split(/,\s*/).some(function(brand){
return $scope.brandCheckboxes[brand];
});
}
}
};