Vuejs来自API的嵌套JSON数据未显示

时间:2018-12-05 05:39:44

标签: javascript json vue.js

从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。我缺少什么?

1 个答案:

答案 0 :(得分:1)

activeUser默认为空字符串,因此您访问activeUser.address时未定义,如果您使用activeUser.address.street,则会出现错误 要解决此问题,您可以使用

<p>{{ (activeUser && activeUser.address)? activeUser.address.street : ''}}</p>  

而不是简单的

<p>{{ activeUser.address.street }}</p>