如何在 vuejs 中的 json 对象中查找嵌套键
How to find nested key in the json object in vuejs
我正在尝试在我的 VUEjs 应用程序上显示我从我的 Django API 获得的用户列表中的用户。
我的用户列表数据来自 API:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/v1/users/1/",
"username": "admin",
"email": "admin@example.com",
"groups": []
}
]
}
我的 VUE 代码:
<template>
<div>
<h1> Users </h1>
<div v-for="results in APIData" :result="results" :key="results.username">
<h5>{{ result.username }}</h5>
<p>{{ result.email }}</p>
</div>
</div>
</template>
<script>
import { getAPI } from '../axios-api';
import { mapState } from 'vuex';
export default {
name: 'Users',
computed: mapState(['APIData']),
created() {
getAPI.get('/v1/users/', { headers: { Authorization: 'Bearer ' + this.$store.state.accessToken } })
.then(response => {
this.$store.state.APIData = response.data
})
.catch(error => {
console.log(error)
})
}
}
</script>
出于某种原因,即使我可以看到我的 API 请求成功并且我可以在我的网络选项卡中看到数据,但网页上没有显示数据。显示用户的方式是否正确?还是我遗漏了什么?
我是 VUEjs 的新手,有人可以帮忙吗?
问题出在v-for,你可以试试:
v-for="results in APIData.results"
由于“results”不是访问器,它是您分配给数组内每个值的名称,并且 APIData 不是数组。
如果你只想循环遍历 APIData
中的 results
:
new Vue({
el: '#demo',
data() {
return {
APIData: {
"count": 1,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/v1/users/1/",
"username": "admin",
"email": "admin@example.com",
"groups": []
},
{
"url": "http://localhost:8000/v1/users/1/",
"username": "user",
"email": "user@example.com",
"groups": []
}
]
}
}
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<template>
<div>
<h1> Users </h1>
<div v-for="result in APIData.results" :key="result.username">
<h5>{{ result.username }}</h5>
<p>{{ result.email }}</p>
</div>
</div>
</template>
</div>
我正在尝试在我的 VUEjs 应用程序上显示我从我的 Django API 获得的用户列表中的用户。
我的用户列表数据来自 API:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/v1/users/1/",
"username": "admin",
"email": "admin@example.com",
"groups": []
}
]
}
我的 VUE 代码:
<template>
<div>
<h1> Users </h1>
<div v-for="results in APIData" :result="results" :key="results.username">
<h5>{{ result.username }}</h5>
<p>{{ result.email }}</p>
</div>
</div>
</template>
<script>
import { getAPI } from '../axios-api';
import { mapState } from 'vuex';
export default {
name: 'Users',
computed: mapState(['APIData']),
created() {
getAPI.get('/v1/users/', { headers: { Authorization: 'Bearer ' + this.$store.state.accessToken } })
.then(response => {
this.$store.state.APIData = response.data
})
.catch(error => {
console.log(error)
})
}
}
</script>
出于某种原因,即使我可以看到我的 API 请求成功并且我可以在我的网络选项卡中看到数据,但网页上没有显示数据。显示用户的方式是否正确?还是我遗漏了什么?
我是 VUEjs 的新手,有人可以帮忙吗?
问题出在v-for,你可以试试:
v-for="results in APIData.results"
由于“results”不是访问器,它是您分配给数组内每个值的名称,并且 APIData 不是数组。
如果你只想循环遍历 APIData
中的 results
:
new Vue({
el: '#demo',
data() {
return {
APIData: {
"count": 1,
"next": null,
"previous": null,
"results": [
{
"url": "http://localhost:8000/v1/users/1/",
"username": "admin",
"email": "admin@example.com",
"groups": []
},
{
"url": "http://localhost:8000/v1/users/1/",
"username": "user",
"email": "user@example.com",
"groups": []
}
]
}
}
},
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="demo">
<template>
<div>
<h1> Users </h1>
<div v-for="result in APIData.results" :key="result.username">
<h5>{{ result.username }}</h5>
<p>{{ result.email }}</p>
</div>
</div>
</template>
</div>