我正在使用<v-data-table>
组件在我的应用程序中显示数据表。有什么方法可以在此数据表中添加序列号列。从1到我的articles数组的长度。
,如果有任何具有任何ID的文章排在第一位,则应该从1开始。
答案 0 :(得分:1)
没有内置方法可以执行此操作,但是您可以通过添加计算属性并使用.map()
方法向每个项目(例如sno
)添加新属性来实现此目的,序列号。您可以根据需要将其重命名。
computed: {
itemsWithSno() {
return this.desserts.map((d, index) => ({ ...d, sno: index + 1 }))
}
},
接下来,只需在标头数组中添加一个新列即可映射此新属性,如:
{
text: 'Serial #',
value: 'sno'
},
此处的值必须与您在计算属性中添加的新属性名称sno
完全相同。
接下来,只需更新v-data-table
items
道具,以使用计算的属性itemsWithSno
代替原始数组,如:
<v-data-table :headers="headers" :items="itemsWithSno">
</v-data-table>
就是这样。
工作演示:
new Vue({
el: '#app',
vuetify: new Vuetify(),
computed: {
itemsWithSno() {
return this.desserts.map((d, index) => ({ ...d, sno: index + 1 }))
}
},
data() {
return {
headers: [{
text: 'Serial #',
value: 'sno'
},
{
text: 'Dessert (100g serving)',
align: 'start',
sortable: false,
value: 'name',
},
{
text: 'Calories',
value: 'calories'
},
{
text: 'Fat (g)',
value: 'fat'
}
],
desserts: [{
name: 'Frozen Yogurt',
calories: 159,
fat: 6.0
},
{
name: 'Ice cream sandwich',
calories: 237,
fat: 9.0
},
{
name: 'Eclair',
calories: 262,
fat: 16.0
},
{
name: 'Cupcake',
calories: 305,
fat: 3.7
},
{
name: 'Gingerbread',
calories: 356,
fat: 16.0
}
],
}
},
})
<link href="https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css" rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<div id="app">
<v-app>
<v-main>
<v-container>
<v-data-table :headers="headers" :items="itemsWithSno" class="elevation-1">
</v-data-table>
</v-container>
</v-main>
</v-app>
</div>