ng-if in tr-element(如果适用)

时间:2018-04-05 14:08:55

标签: javascript angularjs angularjs-ng-repeat

所以我有这个表格,我通过用ng-repeat迭代一个对象列表来渲染。我还能够对预定义的字符串集进行一些过滤,方法是将它们与ng-model一起列在元素中,并让用户从列表中进行选择。然后和我的ng-repeat一起我有一个ng-if只显示那些通过过滤器的对象。但是,我还希望能够完全禁用过滤器并一次列出所有对象,这就是我的ng-if搞砸了。

示例数据:

[
  {
    "key": "val A"
  },
  {
    "key": "val B"
  },
  {
    "key": "val A"
  }
]   

HTML代码:

<!-- List of strings to filter on -->
<select ng-model="keyFilter">
    <option>Val A</option>
    <option>Val B</option>
</select>

<!-- List objects in table -->
<table>
    <thead>...</thead>
    <tbody>
        <tr ng-repeat-start="object in objects"
            ng-if="object.key == keyFilter">
            ...
        </tr>
        <tr ng-repeat-end>
            <!-- Expandable inline table -->
        </tr>
    </tbody>
</table>

我得到了这个功能,当我在选项集中选择“Val A”或“Val B”时,表格会更新并仅显示这些对象。但是,我真的不知道如何让所有对象一次显示。我想在ng-if之前进行初步检查,确定'keyFilter'是否为null。也就是说,如果过滤器适用。

1 个答案:

答案 0 :(得分:0)

更改

ng-if="object.key == keyFilter"

ng-if="object.key === keyFilter || !keyFilter"

这样,如果没有keyFilter(!keyFilter),则会显示所有数据。