【发布时间】:2020-08-24 04:22:30
【问题描述】:
我们的表格分页和排序都是在服务器上完成的,但我还是想让用户点击列标题进行排序。当排序发生变化时,我需要访问表格排序选项。看来事件是分开的
update:sort-by
update:sort-desc
我可以创建两个方法,让第一个事件设置列(排序依据)值,然后第二个方法实际触发排序。但这听起来很可怕,而且容易出现竞争条件或未来的错误。
如果排序依据也包括 desc/asc 数据会更好。我尝试为表创建一个引用,但由于某种原因,包含排序信息的属性为空。
事件 update:options 包含所有必要的信息,但它可能会因为排序以外的其他原因而触发,排序也不理想。
所以我不确定我是否在这里遗漏了什么。有没有更好的方法来做到这一点?
<v-data-table
ref="contractItemTable"
:headers="headers"
:items="contracts"
:disable-sort="isLoadingPage"
:server-items-length="tableTotal"
disable-pagination
hide-default-footer
@click:row="navigateToContract"
single-select
@update:sort-by="sortTable"
@update:sort-desc="sortTable"
item-key="id.id">
还有 JS
public sortTable(event) {
console.debug(this.$refs.contractItemTable.sortBy);
console.debug(this.$refs.contractItemTable.sortDesc);
}
无论我点击什么,sortBy 和 sortDesc 属性都是空的。如果我使用选项事件,则该事件包含正确的 sortBy 和 sortDesc。但如上所述,不完全是我想要使用的事件。我让它工作了,但我必须“忽略”初始加载选项事件,因为它不是触发此方法的有效时间。
【问题讨论】:
-
你能发布你的代码吗?
-
已更新代码。不过不确定会不会好很多。似乎对表的引用永远不会使用排序数据进行更新。它包含实际数据和其他内容。但不是那种。所以我认为这可能是图书馆的一个错误。
标签: vuetify.js