当前位置: 首页 > 知识库问答 >
问题:

AngularJS strict filter字段为空时,如何显示所有值?

殷烨
2023-03-14

我有一个表,它可以被几个列过滤。过滤器很严格。启动数据时,它会显示所有值。然而,在按某列过滤并返回到empty选项以显示所有值之后,它将显示一个空表。如何仅对非空值应用严格筛选器?

<select
    ng-model="search.column1">
    <option value=''></option>
    <option ng-repeat="e in vm.getExample value="{{e.column1}}">{{e.column1}}</option>
</select> 

<select
    ng-model="search.column2">
    <option value=''></option>
    <option ng-repeat="e in vm.getExample value="{{e.column2}}">{{e.column2}}</option>
</select> 

<table>
    <tr>
        <th>Column1</th>
        <th>Column2</th>
    </tr>

    <tr ng-repeat="e in vm.getExample | filter:search:true">
        <td>{{ e.column1 }}</td>
        <td>{{ e.column2 }}</td>
    <tr>
</table>

共有2个答案

章高朗
2023-03-14

已在控制器中创建自定义筛选器:

$scope.filterMyData = function (input, searchParam) {

     if (searchParam == '')
          return true;

     return angular.equals(input, searchParam);
}

并改为:

<tr ng-repeat="e in vm.getExample | filter:search:filterMyData">
方嘉志
2023-03-14

您的问题在于过滤器的使用:

您应该将filter: search: true更改为filter: search

第三个参数过滤器是一个比较器。在这种情况下,您不需要它:

比较器用于确定使用表达式检索的值(当它不是函数时)是否应被视为基于期望值(来自过滤器表达式)和实际值(来自数组中的对象)的匹配。

如果你想了解更多关于比较器的信息,我建议你阅读这个优秀的答案(SO)。

代码的工作片段:

var app = angular.module('testApp', []);
app.controller('testController', ['$scope', function($scope) {
  this.getExample = [{
    'column1': 1,
    'column2': 2
  }, {
    'column1': 3,
    'column2': 4
  }, {
    'column1': 5,
    'column2': 6
  }];
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="testApp" ng-controller="testController as vm">
  <select ng-model="search.column1">
    <option value=''></option>
    <option ng-repeat="e in vm.getExample" value="{{e.column1}}">{{e.column1}}</option>
  </select>

  <select ng-model="search.column2">
    <option value=''></option>
    <option ng-repeat="e in vm.getExample" value="{{e.column2}}">{{e.column2}}</option>
  </select>

  <table>
    <tr>
      <th>Column1</th>
      <th>Column2</th>
    </tr>

    <tr ng-repeat="e in vm.getExample | filter:search">
      <td>{{ e.column1 }}</td>
      <td>{{ e.column2 }}</td>
      <tr>
  </table>
</div>
 类似资料:
  • 问题内容: 我正在努力从以下代码中获取正确的输出: 游乐场片段 打印时,结构字段为空。我敢肯定某个地方有一个愚蠢的错误,但是我仍然对Go还是陌生的,而且我已经在这里呆了几个小时。请帮忙。 问题答案: 这已经出现了很多次了。问题在于只能对导出的字段进行封送处理。 通过以大写(大写)字母开头来导出结构域。 在Go Playground上尝试一下。 请注意,JSON文本包含带有小写字母文本的字段名称,但

  • 我必须在我的Android应用程序中列出Firebase Firestore文档中的所有字段。如何落实? 例如在附上的截图中,我必须在我的App中显示文档“HiySLB7YW0DGE5B1MMPigreByJ03”中的所有字段。 文档截图

  • 概括地说,当使用merge时,子视图都在自定义类(LinearLayout的子类)中(并且标记为可见),但屏幕上只显示一个子视图。 为了让我的LinearLayout自定义类正确地显示它的两个子视图,我需要做一些额外的事情吗?

  • 我在这个登录屏幕上工作,我希望所有字段、文本和按钮在显示IME时调整大小。我已经在androidManifest.xml上使用了android: windowSoftInputMode="调整调整大小",但我仍然在其他元素下面获取一些元素。 虚拟键盘是否覆盖了TextView“地籍Agora”(id=地籍)无关紧要。但是,我希望至少EditText、它们的文本视图和按钮都是可见的。 我发现这个未回

  • 请帮忙。注册页面一直显示此字段是必需的错误。我是初学者谢谢 模型。派克 来自django。数据库导入模型 从django.contrib.auth.models导入AbstractBaseUser, BaseUserManager 类用户管理器(BaseUserManager): 类帐户(AbstractBaseUser): views.py 来自django。快捷方式导入、渲染、重定向 来自dj

  • 环境: jdk:17.0.1 映射:1.5.1.Final 使用默认配置,我生成了以下代码 但我想在source的所有字段都为null时返回null,如下所示 我应该如何配置它?