2012-10-05 32 views
9

我对AngularJS非常陌生,今天在玩过滤器。我能够应用filter筛选器来仅显示符合选择菜单中条件的行。但是,我无法为按钮添加“清除过滤器”功能。点击按钮时如何重置过滤器?如何清除过滤器 - AngularJS

在下面Plunker,你可以看到我用在尝试的代码实现这一点: Plunker - AngularJS Sample

回答

23

您可以使用ng-click绑定click处理的范围之内清除query变量。

http://plnkr.co/edit/p1DnoV

+0

谢谢。这真的很有帮助。 – Sparda

+1

如果我只想清除卧室过滤器,我试过'$ scope.query.bedroom = {}'它不起作用 – naCheex

26

ng-click指令可以被用于设置滤波器模型以任何falsey - 丁不可─false JavaScript值,如''undefinednull{}

在以下代码中,单击div将重置customFilter模型。

<input type="text" ng-model="customFilter" /> 
<div ng-click="customFilter = undefined"> 
    Clear Filter 
</div> 

Here's a link to an updated fork of your Plunker project using Angular v1.4.1

+2

一种非常快速和整洁的方法,无需向控制器添加点击功能。很简单。 – Neel

+0

这个提示帮了我。但是我发现清除输入ng模型并没有解决我的问题,我需要清除过滤器对象,例如。所以 JoeKir

+0

@JoeKir我在Plunkr中添加了一个'示例,我的答案。 –

0

这个例子将帮助你清除,如果你使用的是NG表过滤器过滤器

<table ng-table="tableParams" show-filter="true" class="table table-striped table-bordered table-condensed table-hover cf"> 
    <tbody> 
     <tr ng-repeat="tableData in $data"> 
      <td data-title="'Name'" filter="{Name:'text'}" sortable="'{Name}'" /> 
     </tr> 
    </tbody> 
</table> 

您可以从清除过滤NG单击如下

$scope.tableParams.parameters({ filter: {}, sorting: {}, page: 1 });