【问题标题】:Vuejs nested JSON data from API not displaying来自API的Vuejs嵌套JSON数据不显示
【发布时间】:2019-05-06 15:21:35
【问题描述】:

从 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 网站的用户对象也包含街道 ppt。我错过了什么?

【问题讨论】:

  • activeUser 默认为空字符串,因此您访问 activeUser.address 它是未定义的,如果您使用 activeUser.address.street 则会出错。

标签: javascript json vue.js


【解决方案1】:

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

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

而不是简单的

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

【讨论】:

  • 现在可以使用,谢谢。将在一段时间内将其标记为最有用
猜你喜欢
  • 2020-11-27
  • 2020-08-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 1970-01-01
  • 2022-12-23
相关资源
最近更新 更多