I am using vuetify v-data-table to display data. The issue I am facing here is No Settings Yet message always shows for like 1 second and then displays the data. Its like no data message loads first and then the actual data shows up. Is there a way to fix this.
<template>
<div>
<v-card>
<v-data-table
:headers="headers"
:items="settings"
hide-default-footer
disable-pagination
:mobile-breakpoint="0">
<template slot="top" v-if="isLoading">
<v-progress-linear
indeterminate
color="red"
></v-progress-linear>
</template>
<template slot="item" slot-scope="props">
<tr>
<td>{{ props.item.name }}</td>
<td>{{ props.item.value }}</td>
</tr>
</template>
<template slot="no-data" >
<v-alert id='no-data' :value="true" color="error" icon="warning">
No Settings Yet
</v-alert>
</template>
</v-data-table>
</v-card>
</div>
</template>
<script>
export default {
data: function() {
return {
settings: [],
headers: [
{ text: 'Name', value: 'name'},
{ text: 'Value', value: 'value'},
{ text: 'Actions', sortable: false}
],
isLoading: false
}
},
created() {
this.fetchSettings();
},
methods: {
fetchSettings() {
var that = this;
that.isLoading = true;
this.$axios.get('/settings.json')
.then(response => {
that.settings = response.data;
that.isLoading = false;
});
}
}
}
</script>
Advertisement
Answer
I think you can do this by adding v-if directive in no-data slot like below example
<template slot="no-data" v-if="!isLoading">
<v-alert id='no-data' :value="true" color="error"
icon="warning">
No Settings Yet
</v-alert>
</template>