【发布时间】:2020-10-16 16:03:28
【问题描述】:
我目前有一个用虚拟数据填充表格的数组道具:
paymentHistoryList: Array
有四列,但我现在只关注日期。我想要做的是能够通过选择表标题日期来对这个表进行排序,触发升序/降序排序。默认情况下,它按降序排序,并且this.sortByPostedDate 已设置为true。目前,我的表头设置如下:
<th v-on:click="sortBy('postedDate')">DATE</th>
我的方法也是这样。同样,这里还会包含更多案例:
sortBy(column) {
switch (column) {
case 'postedDate':
if (this.sortByPostedDate) {
this.paymentHistoryList.sort((a, b) => a.paymentScheduledDate - b.paymentScheduledDate);
} else {
this.paymentHistoryList.sort((a, b) => b.paymentScheduledDate - a.paymentScheduledDate);
}
break;
default:
break;
}
}
这是一张桌子的制作方法:
<table>
<thead>
<tr>
<th v-on:click="sortBy('postedDate')">DATE</th>
<th class="table-cell">AMOUNT</th>
</tr>
</thead>
<tbody>
<radio-group>
<template v-for="(payment) in paymentHistoryList">
<tr>
<td>{{ payment.paymentScheduledDate }}</td>
<td>{{ payment.paymentAmount }}</td>
</tr>
</template>
</radio-group>
</tbody>
</table>
很遗憾,当单击 Date 表标题时,paymentHistoryList 不会排序。我已经确认标题在被点击时可以识别,但在尝试运行 sortBy 函数时似乎断开连接。
我已经看到通过计算的 mapState 而不是 props 引入表信息的实现方式。道具是问题吗?如果是这样,有没有办法在维护道具的同时实现这一点?
【问题讨论】:
-
问题不清楚。问题是什么?你有错误吗?
paymentHistoryList不排序吗? -
@3limin4t0r 哎呀,对不起! paymentHistoryList 没有排序。
-
我的猜测是
paymentScheduledDate是一个字符串,当你这样做"2020-10-16" - "2020-10-13"时,你最终会得到NaN。sort期望返回正值、负值或零值。如果所有内容最终都是NaN,则没有任何排序。 -
@3limin4t0r
paymentScheduledDate是一个字符串。很确定这是这里的根本问题,谢谢!!
标签: javascript vue.js sorting