Angular-如何显示结果,仅在未选中时显示
Angular - How to make results show, only if unchecked
我有一段代码可以过滤并显示复选框的结果。如果取消选中所有复选框,则显示所有结果;如果选中复选框,仅显示选定的复选框。
然而,当复选框未选中时,我试图显示所有结果,如果复选框被选中,则它不会显示特定结果,同时继续显示未选中的框。
控制器.js
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
<li><b><h2>Filter by Class</h2></b></li>
<li ng-repeat="course in courses | orderBy:['-status', 'name']">
<label>
<input type="checkbox" ng-model="courseCheckboxes[course.name]" />{{course.name}}
</label>
</li>
我误解了你的问题,所以我重新编辑了答案。
当searchFilter(record)返回false时,记录将被过滤掉(不显示)。
这是一个过滤器的版本,它应该做与正在做的相反的事情(隐藏被检查的商家和包含被检查品牌的商家)。希望这能有所帮助。
html
<div ng-repeat="record in records | filter: searchFilter">
{{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];
});
}
}
};
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- BMI计算器以Javascript显示结果
- 在表中显示结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 搜索XML文件并使用javascript显示结果
- Moment.js不显示结果
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- 防止 PHP 在新页面中显示结果
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- Angular-如何显示结果,仅在未选中时显示
- backbone.js视图没有't由于异步获取而显示结果;t渲染
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 接受用户输入,与JSON数据匹配,并以javascript显示结果
- 自动完成 JQuery 不显示结果
- 控制台.log或显示结果的函数
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- AJAX 实时搜索仅当结果以相同的第一个字母开头时才显示结果