为数组的每一项获取数据
Fetch data for each item of array
我的博文有一个 "content" 数组。在这个数组中是产品的 ID (asin) 和列出的内容。对于每个项目,我想使用 asin-id 进行 api 调用并显示特定产品。
为了测试,我创建了一个方法 getProduct(content.asin)
,但这当然不是解决方案。对于每个循环,我只想显示特定的产品,我不想单击按钮来加载数据,我希望自动获取数据。我该怎么做?
可视化:内容数组(blogPost.content)
content: [{ content: "some text", asin: "asinID" }, ...]
HTML
<div v-for="content in blogPost.content" :key="content.id">
{{ content.asin }}
<button @click="getProduct(content.asin)">Click</button>
{{ product }}
<div v-html="content.content"></div>
</div>
JS
export default {
data() {
return {
blogPost: [],
product: [],
}
},
async fetch() {
try {
const blogPost = await this.$axios.$get(
`/api/get-post/${this.$route.params.id}`
)
this.blogPost = blogPost
} catch (err) {
console.log(err)
}
},
methods: {
async getProduct(asin) {
try {
const product = await this.$axios.$get('/api/get-product-from-asin', {
params: { asin },
})
this.product = product
} catch (err) {
console.log(err)
}
},
},
}
您可以映射您的 blogPost 内容并为每个项目进行 http 调用。
但是效率不高,API应该在主调用中有数据。
但你可以这样做:
blogPost.content.map((content) => {
content.product = await this.$axios.$get('/api/get-product-from-asin',
{
params: { content.asin },
});
return content;
});
现在 blogPost 内容应该包含您的产品数据。
我的博文有一个 "content" 数组。在这个数组中是产品的 ID (asin) 和列出的内容。对于每个项目,我想使用 asin-id 进行 api 调用并显示特定产品。
为了测试,我创建了一个方法 getProduct(content.asin)
,但这当然不是解决方案。对于每个循环,我只想显示特定的产品,我不想单击按钮来加载数据,我希望自动获取数据。我该怎么做?
可视化:内容数组(blogPost.content)
content: [{ content: "some text", asin: "asinID" }, ...]
HTML
<div v-for="content in blogPost.content" :key="content.id">
{{ content.asin }}
<button @click="getProduct(content.asin)">Click</button>
{{ product }}
<div v-html="content.content"></div>
</div>
JS
export default {
data() {
return {
blogPost: [],
product: [],
}
},
async fetch() {
try {
const blogPost = await this.$axios.$get(
`/api/get-post/${this.$route.params.id}`
)
this.blogPost = blogPost
} catch (err) {
console.log(err)
}
},
methods: {
async getProduct(asin) {
try {
const product = await this.$axios.$get('/api/get-product-from-asin', {
params: { asin },
})
this.product = product
} catch (err) {
console.log(err)
}
},
},
}
您可以映射您的 blogPost 内容并为每个项目进行 http 调用。 但是效率不高,API应该在主调用中有数据。
但你可以这样做:
blogPost.content.map((content) => {
content.product = await this.$axios.$get('/api/get-product-from-asin',
{
params: { content.asin },
});
return content;
});
现在 blogPost 内容应该包含您的产品数据。