【发布时间】:2020-03-12 03:37:48
【问题描述】:
我正在尝试使用我的 api 中的三个 for 循环来填充表。
const events = await app.$axios.get('/api/events/')
const markets = await app.$axios.get('/api/markets/')
const markets = await app.$axios.get('/api/runners/')
我需要确保表行索引是 runners,因为 runners 列的跑步者比市场多,市场的行数比事件多。
像这样。
Event Market
Runner
Runner
Runner
Market
Runner
Runner
当我尝试在同一个 vue 文件中执行多个 for for 循环时,我收到此错误。
duplicate attribute key
为什么在单独的循环中使用 id 会出现此错误? 我的问题是如何根据每行的跑步者索引填充表格?
这是我目前的代码。
<template>
<div class="course-list-row">
<th style="width:5%"> Start date </th>
<th style="width:5%"> Event name</th>
<th scope="col">Market</th>
<th scope="col">Runner</th>
<tr v-for="(event, index) in events" :key=id
v-for="(market, index) in markets" :key=id
v-for="(runner, index) in runners" :key=id>
<td>{{ event.start_time }} </td>
<td>{{ event.event_name }} </td>
<td>{{ market.name }} </td>
<td>{{ runner.name }} </td>
<td />
</tr>
</div>
</template>
<script>
export default {
async asyncData({
app
}) {
try {
const events = await app.$axios.get('/api/events/')
const markets = await app.$axios.get('/api/markets/')
const runners = await app.$axios.get('/api/runners/')
return {
events: events.data.results,
markets: markets.data.results,
runners: runners.data.results,
error: false
}
} catch (e) {
console.log('error', e)
return {
events: [],
markets: [],
runners: [],
error: true
}
}
},
};
</script>
<style>
th,
td {
font-family: ‘Lato’, sans-serif;
font-size: 12px;
font-weight: 400;
padding: 10px;
text-align: left;
width: 0%;
border-bottom: 1px solid black;
}
</style>
api 响应的 id 键如下。
/api/事件
{
"count": 80,
"next": null,
"previous": null,
"results": [{
"id": 103,
"sport_id": "9",
"event_name": "Guilherme Clezar vs Uladzimir Ignatik",
"start_date": "12-11-19",
"status": "open",
"event_id": 1273804660340017
}]
}
/api/markets
{
"count": 128,
"next": "http://localhost:8000/api/markets/?page=2",
"previous": null,
"results": [{
"id": 151,
"market_id": 1273804670840017,
"market_name": "Moneyline",
"status": "open",
"volume": 1107.5453,
"event": 103
}]
}
【问题讨论】:
-
No Runners 是最大的,然后是 Market 然后是 Events。
-
1.您不能在同一个元素上有多个
v-for属性,您需要为两个外部循环使用<template>元素。 2.idfrom:key=id是在哪里定义的?您发布的代码中似乎不存在它。 -
问题与错误完全一样
duplicate attribute key,您在同一元素中有 3 个v-for,这是实际问题,您不能有超过 1 个同名属性 -
@skirtle 我是 javascript 和前端开发的新手。您是否有机会向我展示该问题的快速解决方案,以便我的循环填充数据?感谢您的 cmets。
-
能否举例说明
events、markets和runners的内容
标签: javascript vue.js axios nuxt.js