我有以下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;对象比较
答案 0 :(得分:2)
您可以实现自己的比较器功能。
我分叉你的插件here应该可以正常工作。
基本上你应该向filter : expression : comparatorFn
添加一个参数,这个函数应该在你的控制器范围内可用。
更新:请记得检查angular docs for filter!