Vuetify v-data-iterator 的属性 rows-per-page-items 确定每页的项目,而不是行
Vuetify v-data-iterator's prop rows-per-page-items determines items per page, not rows
我们正在使用 Vuetify 的 v-data-iterator 来控制网格布局上的分页。我们将迭代器的每页行数设置为 [8, 16, 24, 36]。但这并不能完全确定每页的行数,而是每页的项目数。也就是说,因为它是网格布局,所以每行可能有多个项目。所以如果我们将它设置为 8,我们会得到:
当然,这取决于屏幕尺寸,但这正是问题所在。 ACTUAL 行数取决于一行中可以容纳多少项。更糟糕的是,如果用户为每页 "rows" 选择 8,并且一行中只能容纳 3 个项目,则最后一行将只有 2 个项目,第三列有空隙。这是具有欺骗性的,因为看起来在第 8 项之后就没有更多的项了(这实际上已经欺骗了一些人,让他们认为他们正在寻找的项实际上并不存在)。他们需要查看页脚才能看到下一页上有更多项目。
我们想知道是否有一种方法可以配置 v-data-iterator 来限制实际行数而不是项目数。这意味着,例如,如果您每页有 2 行,则页面上可能有 8 个项目(在宽屏幕上)或页面上有 6 个项目(在较小的屏幕上),但至少在最后一个之后没有间隙页面上的项目(或者如果有间隙,那只是因为它实际上是最后一个项目)。
非常感谢。
Vuetify 似乎在 2.x 中取消了 rows-per-page-items
,也许是因为这个原因。
控制每页行数 与项目数量、每页所需行数和 Vuetify 的 5 个响应断点有关的数学挑战。使用计算值,确定页数(用于分页)、每行项目(基于每个断点上您想要的列数),最后使用它来计算每页项目数 (ipp)...
computed: {
numberOfPages () {
return Math.ceil(this.beers.length / this.ipp)
},
itemsPerRow () {
switch (this.$vuetify.breakpoint.name) {
case 'xs': return 1
case 'sm': return 2
case 'md': return 3
case 'lg': return 4
case 'xl': return 6
}
},
ipp () {
return Math.ceil(this.rowsPerPage * this.itemsPerRow)
}
},
并且由于 Vuetify 基于 12 列网格,确定 cols
道具很简单...
<v-row>
<v-col
v-for="(item,idx) in props.items"
:key="item.name"
:cols="(12/itemsPerRow)">
....
</v-col>
</v-row>
我们正在使用 Vuetify 的 v-data-iterator 来控制网格布局上的分页。我们将迭代器的每页行数设置为 [8, 16, 24, 36]。但这并不能完全确定每页的行数,而是每页的项目数。也就是说,因为它是网格布局,所以每行可能有多个项目。所以如果我们将它设置为 8,我们会得到:
当然,这取决于屏幕尺寸,但这正是问题所在。 ACTUAL 行数取决于一行中可以容纳多少项。更糟糕的是,如果用户为每页 "rows" 选择 8,并且一行中只能容纳 3 个项目,则最后一行将只有 2 个项目,第三列有空隙。这是具有欺骗性的,因为看起来在第 8 项之后就没有更多的项了(这实际上已经欺骗了一些人,让他们认为他们正在寻找的项实际上并不存在)。他们需要查看页脚才能看到下一页上有更多项目。
我们想知道是否有一种方法可以配置 v-data-iterator 来限制实际行数而不是项目数。这意味着,例如,如果您每页有 2 行,则页面上可能有 8 个项目(在宽屏幕上)或页面上有 6 个项目(在较小的屏幕上),但至少在最后一个之后没有间隙页面上的项目(或者如果有间隙,那只是因为它实际上是最后一个项目)。
非常感谢。
Vuetify 似乎在 2.x 中取消了 rows-per-page-items
,也许是因为这个原因。
控制每页行数 与项目数量、每页所需行数和 Vuetify 的 5 个响应断点有关的数学挑战。使用计算值,确定页数(用于分页)、每行项目(基于每个断点上您想要的列数),最后使用它来计算每页项目数 (ipp)...
computed: {
numberOfPages () {
return Math.ceil(this.beers.length / this.ipp)
},
itemsPerRow () {
switch (this.$vuetify.breakpoint.name) {
case 'xs': return 1
case 'sm': return 2
case 'md': return 3
case 'lg': return 4
case 'xl': return 6
}
},
ipp () {
return Math.ceil(this.rowsPerPage * this.itemsPerRow)
}
},
并且由于 Vuetify 基于 12 列网格,确定 cols
道具很简单...
<v-row>
<v-col
v-for="(item,idx) in props.items"
:key="item.name"
:cols="(12/itemsPerRow)">
....
</v-col>
</v-row>