【发布时间】:2017-10-14 10:49:32
【问题描述】:
我有一个生成一系列表格行的 ng-repeat。一栏标题为“任务状态”,如果状态显示为“完成”,我认为没有理由显示它,因为工作已经完成。
我使用了 ng-show = values != 0;这最初是有效的,直到我添加了一个增量来对任务进行编号。
我发现 data = "done" 并没有完全从 DOM 中删除,并且仍然在列表中注册,从而破坏了增量。见下图:
所以第 2 行和第 3 行是等于“完成”的数据。我能做些什么来忽略它们?
这是我的标记:
<table class="backlog table table-bordered table-striped" width="100%" border="0" cellpadding="0" cellspacing="0" summary="Our Jira Backlog">
<tbody>
<tr>
<th>Priority</th>
<th>Task Priority Score</th>
<th>Task Summary</th>
<th>Due date</th>
<th>Task Status</th>
</tr>
<tr ng-repeat="issue in issues | orderBy: '-fields.customfield_12401'" ng-if="issue.fields.status.statusCategory.name != 'Done'">
<td>{{ $index + 1 }}</td>
<td>{{ issue.fields.customfield_12401 }}</td>
<td>{{ issue.fields.summary }}</td>
<td>{{ issue.fields.customfield_13700 }}</td>
<td>{{ issue.fields.status.statusCategory.name }}</td>
</tr>
</tbody>
</table>
因此,来自“issue.fields.status.statusCategory.name”的任何内容都需要被忽略,因此优先级(第一列)变为 1、2、3、4、5 等,而不显示“完成”任务状态栏。
【问题讨论】:
-
这不是模板问题。当您设置问题的值时,您必须自己在控制器或指令中计算优先级。避免在模板中做业务逻辑。
-
我不太明白你想要什么。是否要跳过某些行,但仍为已跳过的行增加
$index? -
在将数据传递给模板之前过滤数据。
-
使用 ng-hide="issue.fields.status.statusCategory.name == 'Done'"
标签: javascript angularjs angularjs-ng-repeat