Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角度-仅当未选中时,如何显示结果_Javascript_Html_Angularjs_Checkbox_Angularjs Filter - Fatal编程技术网

Javascript 角度-仅当未选中时,如何显示结果

Javascript 角度-仅当未选中时,如何显示结果,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

我有一些代码可以过滤并显示复选框的结果。选中所有复选框时,将显示所有结果;选中复选框时,将仅显示选定的框

但是,我尝试在复选框未选中时显示所有结果,如果复选框已选中,则不会显示特定结果,同时继续显示未选中的框

controller.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

  • 按类筛选
  • {{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];
          });
        }
      }
    };