【发布时间】:2020-07-31 16:28:55
【问题描述】:
我有一个表格,允许我在另一行上方或下方插入新行。表格可以按列排序。
问题是添加到我的排序表中的带有空字段的新行将始终显示在表的顶部。
这是 HTML:
<table>
<th ng-repeat= "header in headers">
<a href="#" ng-click="orderByField='name'; reverseSort = !reverseSort"> Name </a>
</th>
<tr ng-repeat "result in results | orderBy:orderByField:reverseSort">
<td>
<span>{{result}}</span>
<md-icon ng-click="addRow(result, true)"></md-icon>
<md-icon ng-click="addRow(result, false)"></md-icon>
</td>
</tr>
</table>
这是我的控制器:
function addRow(selectedRow, isAbove) {
var selectedPos = $scope.results.indexOf(selectedRow);
var newRow = "";
if (isAbove) {
$scope.results.splice(selectedPos, 0, newRow);
} else {
$scope.results.splice(selectedPos + 1, 0, newRow);
}
}
所以如果我的表格是这样的,排序后:
[Before sort] [After sort]
Name Name
---- ----
D A
---- ----
C B
---- ----
B C
---- ----
A D
---- ----
我在 D 上方和下方插入一个新行,我的表格现在看起来像这样:
Name
-----
""
-----
""
-----
A
-----
B
-----
C
-----
D
-----
预期结果:
Name
----
A
----
B
----
C
----
""
----
D
----
""
----
为什么新行没有直接显示在我选择从中添加的行的上方或下方?
【问题讨论】:
-
除非我理解错了,我想你会想要分享用于添加行的代码。
-
@brian 嗨,我已经编辑了我的问题以包含用于添加行的代码。
-
我对堆栈不是很熟悉,但如果我不得不猜测一下,我会怀疑 selectedPos 没有得到您期望的值。查看 results.indexOf() 行。
-
因为正在对行进行排序,并且 "" 在其他项目之前。
-
@Dan 有没有解决方案不对新添加的行进行排序
标签: javascript html angularjs angularjs-ng-repeat