javascript - vue中的嵌套v-for循环
问题描述
orders: [{
_id: '',
products: [
_id: '',
product: {
title: '',
price: ''
}
],
user: {
name: '',
email: ''
}
}]
我想orders[index].products[index]
在我的 Vue 模板的表格行中显示产品数据,我必须使用 2 个嵌套形式的 for 循环。
<tbody>
<template v-for="(item, index) of orders" :key="index">
<tr v-for="(prod, j) of item.products" :key="j">
<td>{{prod.name}}</td>
<td>$price</td>
<td>
qty
</td>
</tr>
</template>
</tbody>
使用上面的代码,我得到模板无法键入的错误。实现解决方案的最佳方法是什么?
解决方案
正如 Vue 警告所示,<template>
s 不能被键入。密钥需要在<template>
的根子节点上(即,<tr>
在这种情况下)。由于根子 ( <tr>
) 已被键入,因此您无需应用另一个密钥。
这里的解决方案是简单地从<template>
. 另外,请注意内部v-for
迭代orders[].products[]
,每个迭代都包含一个字段,由于的唯一性id
,这将是比索引更好的键。id
<tbody>
<!-- BEFORE: -->
<!-- <template v-for="(item, index) of orders" :key="index"> -->
<template v-for="(item, index) of orders">
<!-- BEFORE: -->
<!-- <tr v-for="(prod, j) of item.products" :key="j"> -->
<tr v-for="(prod, j) of item.products" :key="prod.id">
...
</tr>
</template>
</tbody>
推荐阅读
- umbraco - Umbraco uSync - 导入不显示导致问题的元素
- javascript - 我想在搜索功能工作后显示当前搜索值
- python - Pandas - 加入数据框 - 值错误 - 但我的列数据类型匹配
- python - 为其他列中的每个唯一值查找列中唯一值的计数
- ios - 是否可以将闭包传递给选择器?
- c# - 我的对象在 Unity 中取消捕捉对象的错误
- reactjs - TS2322 - 类型 X 不可分配给类型 Y,但 Y 中的所有字段都包含在 X 中
- javascript - 在 javascript 中发布喜欢/不喜欢系统 php
- php - 试图获得不显示的结果
- php - 根据 Woocommerce 订单状态禁用特定付款方式