【问题标题】:Angularjs clear filter for ng-repeatng-repeat 的 Angularjs 清除过滤器
【发布时间】:2019-01-29 17:15:41
【问题描述】:

我有这个 ng-repeat 条件:

<tr ng-repeat="(k, v) in loanapps | filter:{LoanStatus:SelectedStatus}:true track by $index">
    <td>
        {{v.Id}}
    </td>
    <td>
        {{v.Name}}
    </td>
</tr>

当我有 SelectedStatus 值时,过滤工作正常。现在我还想重置过滤器并显示所有结果。

我有这个按钮点击功能:

$scope.ResetStatusFilter = function() {
    $scope.SelectedStatus = null;
}

我也试过了:

$scope.ResetStatusFilter = function() {
    $scope.SelectedStatus = '';
}

但是这样做是清除所有结果。

无论如何,一旦单击按钮,我如何显示所有结果并排除过滤器?

选择列表是这个:

<select ng-model="SelectedStatus">
    <option value="Under Review">Under Review</option>
    <option value="Waiting for Meeting">Waiting for Meeting</option>
    <option value="Processing">Processing</option>
</select>

【问题讨论】:

  • 使用自定义过滤器 - docs.angularjs.org/guide/filter
  • thx @bhantol 你能给我举个例子,我应该如何在我的情况下应用自定义过滤器,谢谢
  • 首次加载列表时selectedstatus 的默认值是多少,您是否尝试将其设置回该值?

标签: javascript angularjs angularjs-scope angularjs-ng-repeat angularjs-filter


【解决方案1】:

尝试将filter:{LoanStatus:SelectedStatus}:true 更改为filter:SelectedStatus

【讨论】:

  • 谁会知道该表应用于哪个字段?谢谢帮助
  • 可能想参考文档,但我相信过滤器会默认搜索整个对象以查找您的字符串值。仔细检查@docs.angularjs.org/api/ng/filter/filter
【解决方案2】:

试试这种短路技术。

<tr ng-repeat="(k, v) in loanapps | 
           filter: (LoanStatus.SelectedStatus &&
     {LoanStatus:SelectedStatus}:true) track by $index">

【讨论】:

    【解决方案3】:

    而不是使用filter:{LoanStatus:SelectedStatus}:truefilter:SelectedStatus

    您可以使用清除过滤器

    $scope.SelectedStatus ={}
    

    它会清除过滤器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-16
      • 1970-01-01
      • 2015-12-20
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 2013-05-09
      相关资源
      最近更新 更多