Сначала вы объявили cols
и rows_data
как объекты в MyTable.vue
, но вы объявили их как массивы в App.vue
.Вы также объявили currentPageData
как объект вместо массива.Это может вызвать некоторые ошибки.
Во-вторых, вы должны предпочесть сделать это:
<template>
<div class="vet-container">
<table>
<thead>
<th class="tab-head-cell" v-for="col in cols" :key="col">{{col}}</th>
</thead>
<tbody>
<tr class="tab-rows_data-row" v-for="row in currentPageData" :key="row.id">
<td
class="tab-rows_data-cell"
v-for="(cell,key,index) in row"
:key="key+index" >{{cell}}</td>
</tr>
</tbody>
</table>
</div>
</template>
<script>
export default {
name: 'my-table',
props: {
title: String,
cols: Array,
rows_data: Array,
},
data() {
return {
index: 0,
size: 10,
};
},
computed: {
currentPageData() {
const start = this.index * this.size;
const end = start + this.size;
return this.rows_data.slice(start, end);
},
},
};
</script>
Затем вы можете передать индекс в props
и изменить его на родительском при нажатии на кнопки.
Небольшое объяснение свойства computed
: это свойство действует как вычисленное data
.Вы можете использовать его, как и любой другой data
или props
, и вы можете рассчитать его содержимое на основе других данных, например, здесь, с текущим индексом и размером страницы.