List.vue 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. <template>
  2. <div class="row">
  3. <!-- 展示用户列表 -->
  4. <div v-show="info.users.length" class="card" v-for="user in info.users" :key="user.login">
  5. <a :href="user.html_url" target="_blank">
  6. <img
  7. :src="user.avatar_url"
  8. style="width: 100px"
  9. />
  10. </a>
  11. <p class="card-text">{{ user.login }}</p>
  12. </div>
  13. <!-- 展示欢迎词 -->
  14. <h1 v-show="info.isFirst">欢迎使用!</h1>
  15. <!-- 展示加载中... -->
  16. <h1 v-show="info.isLoading">加载中...</h1>
  17. <!-- 展示错误信息 -->
  18. <h1 v-show="info.errMsg">{{ info.errMsg }}</h1>
  19. </div>
  20. </template>
  21. <script>
  22. export default {
  23. name: "List",
  24. data(){
  25. return{
  26. info:{
  27. isFirst:true,
  28. isLoading:false,
  29. errMsg:'',
  30. users:[]
  31. }
  32. }
  33. },
  34. mounted(){
  35. this.$bus.$on('updataListData',(dataObj) => {
  36. console.log(dataObj)
  37. this.info = {...this.info,...dataObj}
  38. // 通过字面量的形式合并对象,也就是对比前后两个对象中的属性,
  39. //重名的属性就以后面对象的数据为准,后面对象没有的就维持不变
  40. })
  41. }
  42. };
  43. </script>
  44. <style scoped>
  45. .album {
  46. min-height: 50rem; /* Can be removed; just added for demo purposes */
  47. padding-top: 3rem;
  48. padding-bottom: 3rem;
  49. background-color: #f7f7f7;
  50. }
  51. .card {
  52. float: left;
  53. width: 33.333%;
  54. padding: .75rem;
  55. margin-bottom: 2rem;
  56. border: 1px solid #efefef;
  57. text-align: center;
  58. }
  59. .card > img {
  60. margin-bottom: .75rem;
  61. border-radius: 100px;
  62. }
  63. .card-text {
  64. font-size: 85%;
  65. }
  66. </style>