【发布时间】:2017-05-29 10:23:08
【问题描述】:
我在单个文件组件中有一个 Vue 应用程序,它允许用户查找 github 用户名并查看用户的全名、登录名和国家/地区。
这是我的组件:
<template>
<div id="app">
<form @submit.prevent="search">
<input v-model="username" />
</form>
<p v-if="data">
{{ data.name }} ({{ data.login }})
is from
{{ data.location }}!
</p>
</div>
</template>
<script>
import Vue from 'vue'
import axios from 'axios'
import VueAxios from 'vue-axios'
Vue.use(VueAxios, axios)
export default {
data() {
return {
username: '',
data: []
}
},
methods: {
search() {
const api = `https://api.github.com/users/${this.username}`
Vue.axios.get(api).then((response) => {
this.data = response.data
}).catch(error => {
console.log(error)
})
}
}
}
</script>
我的问题是:我找不到一种方法来处理用户输入 github 中不存在的用户的情况。使用 axios 承诺的 catch 块,我希望将错误记录到控制台,但事实并非如此。我希望能够处理这种情况的原因是,当没有搜索任何内容或进行了无效搜索时,我不希望占位符文本() is from !。
我尝试使用data.length 而不是仅使用data 进行v-if 检查,但在这种情况下,我的组件似乎没有“反应”;我可以在 Vue 开发工具中看到数据变化,但在组件中看不到。这里会发生什么?
这是该应用的 webpackbin 演示:http://www.webpackbin.com/VJlfcrGLM
【问题讨论】:
标签: promise vuejs2 vue.js axios