如何删除表格上的angularjs过滤器?

时间:2017-09-25 18:32:33

标签: angularjs

我正在使用ng-repeat生成一个值表,并且我有一个用于过滤该列表的文本框。这很好。

我还有一个小" x"文本框后面的图像,用户可以单击该图标以删除他们键入的文本以进行过滤。当他们点击" x"时,我想清除文本框并恢复未经过滤的完整项目列表。单击" x"清除文本框,但列表完全消失,而不是恢复到完整的未过滤状态。诀窍是什么?这是我的代码:

<table id="tblGroups">
    <tr>
        <td>
            <input ng-model="f.Name" />
            <a href=""><img class="DeleteSavedSearchIcon" src="Content/assets/DeleteIconSmall.png" ng-click="f.Name = null" /></a>
        </td>
    </tr>
    <tr ng-repeat="g in groups | filter:f">
        <td>
            <label><input type="checkbox" id="{{g.Name}}" ng-click="onClickSearchCriteriaCheckbox()" ng-model="selected[m.Name]" />{{g.Name}}</label>
        </td>
    </tr>
</table>

2 个答案:

答案 0 :(得分:1)

尝试

ng-click="f.Name = undefined"

参见plunker https://plnkr.co/edit/TpESoPYENhYQoWuNrIFT?p=preview

中的示例

答案 1 :(得分:1)

而不是将f.name设置为null,而不是将其设置为空白字符串。

<强>之前:

<a href=""><img class="DeleteSavedSearchIcon" src="Content/assets/DeleteIconSmall.png" alt="delete"
 ng-click="f.Name = null" /></a>

<强>后:

<a href=""><img class="DeleteSavedSearchIcon" src="Content/assets/DeleteIconSmall.png" alt="delete"
 ng-click="f.Name = ''" /></a>

var app = angular.module('myApp', []);

app.controller('MyController', function MyController($scope) {
  $scope.groups = [{
    Name: 1
  }, {
    Name: 2
  }, {
    Name: 3
  }, {
    Name: 4
  }, {
    Name: 5
  }, {
    Name: 6
  }];
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-controller='MyController' ng-app="myApp">
  <table id="tblGroups">
    <tr>
      <td>
        <input ng-model="f.Name" />
        <a href=""><img class="DeleteSavedSearchIcon" src="Content/assets/DeleteIconSmall.png" alt="delete" ng-click="f.Name = ''" /></a>
      </td>
    </tr>
    <tr ng-repeat="g in groups | filter:f">
      <td>
        <label>
          <input type="checkbox" id="{{g.Name}}" ng-click="onClickSearchCriteriaCheckbox()" ng-model="selected[m.Name]" />{{g.Name}}</label>
      </td>
    </tr>
  </table>
</div>