gpt4 book ai didi

javascript - Vue.js 数据表只显示第一列的数据

转载 作者:搜寻专家 更新时间:2023-10-30 22:50:46 24 4
gpt4 key购买 nike

我正在尝试遍历一个对象,该对象是使用 axios 从数据库中提取的。我能够使该对象显示在我的数据表中,但我无法使其将数据分解到指定的列

第一个片段是父组件。实际列表的 tr 和 td 我分解为一个单独的组件,但可能需要修复。

<template>
<div class="container">
<router-link to="/add" class="btn btn-primary btn-sm float-
right">AddClient</router-link>
<table class="table">
<thead class="thead-dark">
<tr>
<th scope="col">#</th>
<th scope="col">Name</th>
<th scope="col">Type</th>
<th scope="col">Email</th>
<th scope="col">Phone</th>
<th></th>
</tr>
</thead>
<client-info></client-info>
</table>

</div>
</template>

<script>
import ClientInfo from '@/components/clientslistexperience/ClientInfo'


export default {
name: 'ClientsList',
components: {
ClientInfo
},
methods: {

},

}
</script>

enter code here

接下来是组件迭代要显示在表中的数据

<template>
<div class="client-info">
<tbody>
<tr v-for="(client, index) in clients" v-bind:key="index"
:client="client">
<th scope="row">{{ client.id }}</th>
<td>{{ client.name }}</td>
<td>{{ client.type }}</td>
<td>{{ client.email }}</td>
<td>{{ client.phone }}</td>
</tr>
</tbody>
</div>

从 'vuex' 导入 { mapState }

  export default {
name: 'client-info',
props: {
id: Array,
type: String,
name: String,
email: String,
phone: Number,
},
computed: {
...mapState ([
'clients'
])
},
created() {
this.$store.dispatch('retrieveClients')
}

}
</script>
enter code here

最后是发出 axios 请求的 vuex 存储。现在我知道将 vuex 用于较小的项目已经过时了,但我打算让它变得相当大,所以这是我选择的方法。任何帮助都是极好的!谢谢。

  import Vue from 'vue'
import Vuex from 'vuex'
import axios from 'axios'

Vue.use(Vuex)
axios.defaults.baseURL = 'http://client-api.test/api'

export default new Vuex.Store({
state: {
clients: []
},
mutations: {
retrieveClients(state, clients) {
state.clients = clients
},
},
actions: {
retrieveClients(context) {
axios.get('/clients')
.then(response => {
// console.log(response)
context.commit('retrieveClients', response.data)
})
.catch(error => {
console.log(error)
})
}
}
})

enter image description here

最佳答案

事实上,您需要删除 ClientInfo.vue 组件中的 div 根元素。将 div 替换为 tbody 即可解决您的问题 ;)

<template>
<tbody class="client-info">
<tr v-for="(client, index) in clients"
:key="index">
<td>{{ client.id }}</td>
<td>{{ client.name }}</td>
<td>{{ client.type }}</td>
<td>{{ client.email }}</td>
<td>{{ client.phone }}</td>
</tr>
</tbody>
</template>

完整演示在这里 > https://codesandbox.io/s/v8vw0z89r7

关于javascript - Vue.js 数据表只显示第一列的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51682405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com