【发布时间】:2020-11-06 18:36:24
【问题描述】:
我对 vue 很陌生,可以解决这个问题。
我收到了一些这样的 JSON:
[
{
"name": "jack",
"age": "twenty",
"Colors": {
"favorite": "blue",
"hate": "orange",
"surprise": "violet"
},
"Food": {
"favorite": "barbecue",
"hate": "broccoli",
"surprise": "pasta"
"new": [
"pizza",
"ice cream"
]
}
}
]
我正在努力做到这一点:
姓名:杰克
年龄:二十岁
颜色
- 最喜欢的:蓝色
- 讨厌:橙色
- 惊喜:紫罗兰色
食物
- 最喜欢的:烧烤
- 讨厌:西兰花
- 惊喜:意大利面
-
新:
- 披萨
- 冰淇淋
HTML
<p><strong>Name:</strong> Jack</p>
<p><strong>Age:</strong> Twenty</p>
<p><strong>Colors</strong>
<ul>
<li><strong>Favorite:<strong> Blue</li>
<li><strong>Hate:<strong> Orange</li>
<li><strong>Surprise:<strong> Violet</li>
</ul>
</p>
<p><strong>Food</strong>
<ul>
<li><strong>Favorite:<strong> Barbecue</li>
<li><strong>Hate:<strong> Broccoli</li>
<li><strong>Surprise:<strong> Pasta</li>
<li><strong>New:<strong>
<ul>
<li>Pizza</li>
<li>Ice cream</li>
</ul>
</li>
</ul>
</p>
所以我这样做了:
HTML
<div v-for="(item, index) in items" :key="index">
<div>
<p><strong>{{title}}</strong> {{item}}</p>
<p v-for="(category, index) in item" :key="index"><strong>{{index}}</strong> {{category}}</p>
</div>
</div>
脚本
import axios from 'axios'
export default {
name: 'theComponent',
props: {},
data() {
return {
items: []
}
},
mounted() {
const url = 'https://api-json-url'
axios.get(url)
.then(response => {
this.items= response.data[0]
})
}
};
但我明白了:
姓名:杰克
0:J
1:a
2:c
3:k
年龄:二十岁
0:T
1:w
2:e
3:n
1:t
2:y
颜色:{"favorite": "blue","hate": "orange","surprise": "violet"}
- 最喜欢的:蓝色
- 讨厌:橙色
- 惊喜:紫罗兰色
食物 {"favorite": "barbecue","hate": "broccoli","surprise": "pasta","new":["pizza","ice cream"] }
- 最喜欢的:烧烤
- 讨厌:西兰花
- 惊喜:意大利面
- 新:["pizza","ice cream"]
HTML
<p><strong>Name:</strong> Jack</p>
<p><strong>0</strong>J</p>
<p><strong>1</strong>a</p>
<p><strong>2</strong>c</p>
<p><strong>3</strong>k</p>
<p><strong>Age:</strong> Twenty</p>
<p><strong>0</strong>T</p>
<p><strong>1</strong>w</p>
<p><strong>2</strong>e</p>
<p><strong>3</strong>n</p>
<p><strong>1</strong>t</p>
<p><strong>2</strong>y</p>
<p><strong>Colors</strong> {"favorite": "blue","hate": "orange","surprise": "violet"}</p>
<p>
<ul>
<li><strong>Favorite:<strong> Blue</li>
<li><strong>Hate:<strong> Orange</li>
<li><strong>Surprise:<strong> Violet</li>
</ul>
</p>
<p><strong>Food</strong> {"favorite": "barbecue","hate": "broccoli","surprise": "pasta","new":["pizza","ice cream"]}</p>
<p>
<ul>
<li><strong>Favorite:<strong> Barbecue</li>
<li><strong>Hate:<strong> Broccoli</li>
<li><strong>Surprise:<strong> Pasta</li>
<li><strong>New:<strong>["pizza","ice cream"]</li>
</ul>
</p>
我认为我需要像 isArray() 这样的东西,在第一个 v-for 之前带有一些 v-if。但我无法到达那里。我也尝试过长度,但没有。
【问题讨论】:
-
需要在模板中直接访问
item.name、item.category等。如果您不知道键名,则需要使用例如Object.keys获取要遍历的密钥。你想递归地遍历每个元素吗?然后,您需要检查该值是对象、数组还是原始值/字符串。
标签: javascript vue.js vue-component