html - 在 Vue JS 中,如何在获得服务器响应后显示表头?
问题描述
在我的 Vue.JS 网页中,我有一个使用 Http - GET 方法的 API 调用。在获取 API Response 之前,默认会显示表头。这看起来不太好。您能否在我下面的当前代码中提供帮助,如何仅在获得服务器响应后显示表头?提前致谢。
包信息.vue
<template>
<h3> Package List </h3>
<div>
<br> <br> <br>
<button @click="fetchPackageIDs"> Get Package IDs </button>
<br> <br>
<table class="table-bordered table-hover table-sm" align="center">
<thead class="thead-light">
<tr scope="row" align="center">
<th> Package IDs </th>
<th> Package Type </th>
<th> State </th>
<th> Sub State </th>
</tr>
</thead>
<tbody>
<tr scope="row" align="center" v-for="(user) in posts.packageIDs" :key="user.packageId">
<td>{{ user.packageId }}</td>
<td>{{ user.packageType }}</td>
<td>{{ user.state }}</td>
<td>{{ user.subState }}</td>
</tr>
</tbody>
</table>
<br> <br> <br>
</div>
</template>
<script>
import { apiHost} from '../config'
import axios from 'axios'
export default {
name:"PackageInfo",
data(){
return{
posts: {
packageIDs:[]
}
}
},
methods:{
fetchPackageIDs(e){
const url=apiHost+'tdg/packageIds/'+localStorage.getItem('userId');
console.log(url);
e.preventDefault();
axios.get(url,null,null)
.then(response=>this.posts.packageIDs=response.data)
.catch(e => {
console.log(e);
})
console.log(this.posts.packageIDs);
},
}
}
</script>
<style >
.form-control:focus{
border-color:#167bff;
box-shadow:none;
}
.auth-inner{
width:450px;
margin :auto;
background: #ffffff;
box-shadow:0px 14px 80px rgba (34,35,58,0.2);
padding:40px 55px 45px 55px;
border-radius:15px;
transition: all .3s;
}
table.table-bordered{
border:1px solid black;
margin-top:20px;
}
table.table-bordered > thead > tr > th{
border:1px solid black;
padding: 7px 30px;
}
table.table-bordered > tbody > tr > td{
border:1px solid black;
padding: 7px 30px;
}
</style>
解决方案
您可以通过使用布尔属性来实现它。
<template>
<div>
<table v-if="showTable">
...
<tr v-if="posts.packageIDs.length === 0">
<td colspan={columnsCount}> No Records Found </td>
</tr>
</table>
</div>
</template>
<script>
export default {
data () {
return {
showTable: false,
posts: {
packageIDs: []
}
};
},
methods: {
fetchPackageIDs(e) {
this.showTable = false;
axios.get({url})
.then(response=>this.posts.packageIDs=response.data)
.catch(e => {console.log(e);})
.finally(() => this.showTable = true)
}
}
}
</script>
推荐阅读
- sql - 如何防止将重复数据插入到值为多个的 SQL Server 表中
- angular - 关于使用 bypassSecurityTrustResourceUrl() 在 Angular 中显示 base64 图像的安全问题
- specflow - 使用具有许多属性的 json 的 specflow 外部数据
- python - 无法在 python 中安装“mysqlclient”包
- sql-server - SQL Server 中的 cpu_time 是如何实现的?
- c++ - CPP MongoDB 驱动程序
- python - 列表中特定元素后的过时元素错误
- node.js - 撤销令牌时找不到响应帐户
- azure - cosmos db 无法使用 IN 查询,spring 数据原生查询和数组或集合(Java)
- javascript - 多个获取按钮和 AbortController