从API获取json数据时,无法访问嵌套的ppts。
我的Vue组件
var profileComponent = {
data : function() {
return {
isError : false,
loading : true,
users : null,
activeUser : '',
}
},
mounted() {
axios
.get('https://jsonplaceholder.typicode.com/users')
.then(response => (this.users = response.data))
.catch(error => {console.log(error);this.isError = true})
.finally(() => {console.log('GET request from users');this.loading = false})
},
template : `
<div class="profile">
<div v-if="isError">
<h3>There was an error</h3>
</div>
<div v-else-if='isLoading'>
Loading
</div>
<div v-else>
<select v-model="activeUser">
<option v-for="user in users" v-bind:value="user">{{ user.name }}</option>
</select>
</div>
<div class="temp">
<p>{{ activeUser.address.street }}</p>
</div>
</div>
`}
这不起作用,但是当我将{{ activeUser.address.street }}
更改为{{ activeUser.address }}
时它开始起作用。请注意jsonplaceholder网站上的users对象也包含街道ppt。我缺少什么?
答案 0 :(得分:1)
activeUser默认为空字符串,因此您访问activeUser.address时未定义,如果您使用activeUser.address.street
,则会出现错误
要解决此问题,您可以使用
<p>{{ (activeUser && activeUser.address)? activeUser.address.street : ''}}</p>
而不是简单的
<p>{{ activeUser.address.street }}</p>