2 回答
TA贡献1843条经验 获得超7个赞
我会使用一个计算属性,该属性创建一个对象,其中 Books 按 Stock ID 分组
computed: {
stocksWithBooks () {
return this.Stocks.data.map(stock => ({
...stock,
books: this.Books.filter(({ id }) => id === stock.book_id)
})
}
}
现在您可以在模板中使用它
<tr role="row" class="even" v-for="Stock in stocksWithBooks" v-bind:key="Stock.id">
<td v-for="Book in Stock.books" :key="Book.id">
{{Book.name}}
</td>
</tr>
为确保您不会因数据分配时间而出错,您应该确保定义一些合理的初始值,例如
data() {
return {
// ...
Books: [], // not {}
// ...
Stocks: { data: [] }, // define an empty "data" array
// ...
}
}
TA贡献1827条经验 获得超8个赞
不要在同一个元素中使用v-ifand ,你可以使用.v-fortemplate
<tr role="row" class="even" v-for="Stock in Stocks.data" v-bind:key="Stock.id">
<td v-for="Book in Books" :value="Book.id" :key="Book.id">
<template v-if="Stock.book_id === Book.id">
{{Book.name}}
</template>
</td>
</tr>
添加回答
举报