parent
2a7fbb0be1
commit
c2570e4400
7 changed files with 194 additions and 40 deletions
@ -0,0 +1,20 @@ |
|||||||
|
<template> |
||||||
|
<div class="container"> |
||||||
|
<Search/> |
||||||
|
<List/> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import Search from "@/components/Search.vue"; |
||||||
|
import List from "@/components/List.vue" |
||||||
|
|
||||||
|
export default { |
||||||
|
name: "App", |
||||||
|
components: {Search, List} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style> |
||||||
|
|
||||||
|
</style> |
After Width: | Height: | Size: 6.7 KiB |
@ -0,0 +1,70 @@ |
|||||||
|
<template> |
||||||
|
<div class="row"> |
||||||
|
<!-- 展示列表 --> |
||||||
|
<div v-show="info.user.length" class="card" v-for="u in info.user"> |
||||||
|
<a :href="u.html_url" target="_blank"> |
||||||
|
<img :src="u.avatar_url" style="width: 100px" alt=""/> |
||||||
|
</a> |
||||||
|
<p class="card-text">{{ u.login }}</p> |
||||||
|
</div> |
||||||
|
<!-- 展示欢迎 --> |
||||||
|
<h1 v-show="info.isFirst">欢迎</h1> |
||||||
|
<!-- 展示加载中 --> |
||||||
|
<h1 v-show="info.isLoading">数据加载中...</h1> |
||||||
|
<!-- 展示错误信息 --> |
||||||
|
<h1 v-show="info.errorMsg">{{ info.errorMsg }}</h1> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
export default { |
||||||
|
name: "List", |
||||||
|
data() { |
||||||
|
return { |
||||||
|
info: { |
||||||
|
user: [], |
||||||
|
isFirst: true, |
||||||
|
isLoading: false, |
||||||
|
errorMsg: '' |
||||||
|
} |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
getUserList(data) { |
||||||
|
this.info = {...this.info, ...data} |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
this.$bus.$on('getUserList', this.getUserList) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped> |
||||||
|
.album { |
||||||
|
min-height: 50rem; /* Can be removed; just added for demo purposes */ |
||||||
|
padding-top: 3rem; |
||||||
|
padding-bottom: 3rem; |
||||||
|
background-color: #f7f7f7; |
||||||
|
} |
||||||
|
|
||||||
|
.card { |
||||||
|
float: left; |
||||||
|
width: 33.333%; |
||||||
|
padding: .75rem; |
||||||
|
margin-bottom: 2rem; |
||||||
|
border: 1px solid #efefef; |
||||||
|
text-align: center; |
||||||
|
border-radius: 10px; |
||||||
|
} |
||||||
|
|
||||||
|
.card > img { |
||||||
|
margin-bottom: .75rem; |
||||||
|
border-radius: 100px; |
||||||
|
} |
||||||
|
|
||||||
|
.card-text { |
||||||
|
font-size: 85%; |
||||||
|
} |
||||||
|
</style> |
@ -0,0 +1,42 @@ |
|||||||
|
<template> |
||||||
|
<div> |
||||||
|
<section class="jumbotron"> |
||||||
|
<h3 class="jumbotron-heading">Search Github Users</h3> |
||||||
|
<div> |
||||||
|
<input type="text" placeholder="enter the name you search" v-model="input"> <button @click="getUser()"> |
||||||
|
Search |
||||||
|
</button> |
||||||
|
</div> |
||||||
|
</section> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import axios from "axios"; |
||||||
|
|
||||||
|
export default { |
||||||
|
name: "Search", |
||||||
|
data() { |
||||||
|
return { |
||||||
|
input: "" |
||||||
|
} |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
getUser() { |
||||||
|
this.$bus.$emit('getUserList', {'isFirst':false, 'isLoading': true}) |
||||||
|
axios.get('https://api.github.com/search/users?', {params: {"q": this.input}}).then( |
||||||
|
response => { |
||||||
|
this.$bus.$emit('getUserList', {'isLoading': false, 'user': response.data.items}) |
||||||
|
}, |
||||||
|
error => { |
||||||
|
this.$bus.$emit('getUserList', {'errorMsg': error.message, 'user': []}) |
||||||
|
} |
||||||
|
) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
||||||
|
|
||||||
|
<style scoped> |
||||||
|
|
||||||
|
</style> |
@ -0,0 +1,19 @@ |
|||||||
|
// 引入Vue
|
||||||
|
import Vue from "vue"; |
||||||
|
// 引入App
|
||||||
|
import App from "./App"; |
||||||
|
|
||||||
|
// 设置Vue
|
||||||
|
Vue.config.productionTip = false |
||||||
|
|
||||||
|
|
||||||
|
// 实例化Vue
|
||||||
|
new Vue({ |
||||||
|
components: { |
||||||
|
App |
||||||
|
}, |
||||||
|
render: h => h(App), |
||||||
|
beforeCreate() { |
||||||
|
Vue.prototype.$bus = this // 安装全局事件总线
|
||||||
|
} |
||||||
|
}).$mount('#app') |
Loading…
Reference in new issue