【发布时间】:2015-03-30 22:21:30
【问题描述】:
我有以下 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。当我选择“--选择标记--”选项时,我希望能够清除过滤器。但是,当我单击“-- 选择标记--”选项时,没有一个 pipeType 对象被可视化。当这种情况发生时,我想可视化所有对象。我应该对我的代码进行哪些更改?
编辑: 这是plunk。
编辑 2: 我已经接受了 Matho 的回答并且它有效。万一其他人想知道为什么它会起作用,我想这个简短的解释(取自this answer的评论)会清除你的想法。
对于数组中的每个元素,Angular 将调用比较器函数并按预期传入“markSearch”,并将元素作为“实际”传入。所以我们说,如果预期或“markSearch”为空,则匹配所有元素(返回真)。否则,执行“严格”对象比较
【问题讨论】:
-
你能放个 jsfiddle 或 plunk
-
当它是:
... filter:markSearch.mark.id">时会发生什么?
标签: javascript angularjs