如何在Angular的select元素中清除过滤器?

时间:2015-03-30 22:21:30

标签: javascript angularjs

我有以下HTML:

<select ng-options="mark.id as mark.name for mark in marks" ng-model="markSearch.mark.id">
    <option value="">-- Choose mark --</option>
</select>
...
<tr ng-repeat-start="pipeType in pipeTypes | filter:markSearch">

我想根据标记的选定选项过滤我的pipeType对象。每个pipeType对象都有一个标记对象,由两个字段组成 - id和name。我希望能够在选择&#34; - 选择标记 - &#34;时清除过滤器。选项。但是,当我点击&#34; - 选择标记 - &#34;选项,没有可视化的pipeType对象。我想在这种情况发生时可视化所有对象。我应该在代码中更改什么?

修改 这是plunk

编辑2: 我已经接受了Matho的回答并且有效。如果其他人想知道为什么它有效,我想这个简短的解释(取自this answer的评论)将清除你的想法。

对于数组中的每个元素,Angular将调用比较器函数并传入&#34; markSearch&#34;正如所料,元素为&#34;实际&#34;。所以我们说,如果预期或&#34; markSearch&#34;为空,然后匹配所有元素(返回true)。否则,执行严格的&#39;对象比较

1 个答案:

答案 0 :(得分:2)

您可以实现自己的比较器功能。

我分叉你的插件here应该可以正常工作。

基本上你应该向filter : expression : comparatorFn添加一个参数,这个函数应该在你的控制器范围内可用。

更新:请记得检查angular docs for filter