參考 vue-hackernews-2.0 項(xiàng)目里面的 spinner.vue 組件龙填,做了簡(jiǎn)單的修改浊吏。修改后的組件添加了信息提示的功能斯辰,而且對(duì)模板做了調(diào)整,方便模塊化使用帖旨。
- ** 功能描述:**
- 列表加載時(shí)顯示(轉(zhuǎn)圈圈)箕昭;
- 加載成功,結(jié)果非空則隱藏加載動(dòng)畫(huà)碉就,結(jié)果為空時(shí)顯示"沒(méi)有符合條件的記錄"盟广;
- 請(qǐng)求失敗顯示"服務(wù)器異常"闷串。
- ** 看看效果 **
- ** 使用方法:**
需要提供 list瓮钥、loading 和 resultCode 配合。list: 列表數(shù)據(jù)烹吵;loading: 加載中碉熄;resultCode: 狀態(tài)碼。
<loading :list="list" :loading="loading" :resultCode="resultCode"></loading>
- ** template **
圈圈效果跟 hackernews 里的一樣肋拔,這里添加了提示信息锈津,resultCode 需要接口返回,不一定 200凉蜂,也可以返回一些其它的狀態(tài)碼琼梆,跟接口配合好就行。
<template>
<div class="loading-wrap">
<svg v-if="loading" class="loading" width="44px" height="44px" viewBox="0 0 44 44">
<circle class="path" fill="none" stroke-width="4" stroke-linecap="round" cx="22" cy="22" r="20"></circle>
</svg>
<div v-if="!loading">
<div v-if="(!list && resultCode == '200')" class="loading-text">沒(méi)有符合條件的記錄</div>
<div v-if="resultCode != '200'" class="loading-text">服務(wù)器異常</div>
</div>
</div>
</template>
- ** script **
props 是從父組件里面?zhèn)鬟^(guò)來(lái)的數(shù)據(jù)窿吩。
<script>
export default {
props: ['list', 'loading', 'resultCode']
}
</script>
- ** style **
這里變化也不大茎杂,主要是將圈圈放在了一個(gè) div 里面,并給提示信息留了點(diǎn)地方纫雁,適合模塊化的顯示煌往。
<style>
.loading-wrap {
text-align: center;
}
.loading-text {
color: #999;
padding: 25px 0;
}
.loading {
animation: rotator 1.4s linear infinite;
}
@keyframes rotator {
0% {
transform: scale(0.5) rotate(0deg);
}
100% {
transform: scale(0.5) rotate(270deg);
}
}
.loading .path {
stroke: #009dd7;
stroke-dasharray: 126;
stroke-dashoffset: 0;
transform-origin: center;
animation: dash 1.4s ease-in-out infinite;
}
@keyframes dash {
0% {
stroke-dashoffset: 126;
}
50% {
stroke-dashoffset: 63;
transform: rotate(135deg);
}
100% {
stroke-dashoffset: 126;
transform: rotate(450deg);
}
}
</style>
- ** 總結(jié) **
最近工作中在用 angular,相對(duì)來(lái)說(shuō) vue 更容易上手轧邪,文檔也很全刽脖。把模板和數(shù)據(jù)交互寫(xiě)在一個(gè)文件里很贊羞海,尤其是與外界交互較少的組件,定義和使用都很方便曲管。復(fù)雜一點(diǎn)的系統(tǒng)配合 vuex 共享狀態(tài)却邓,我已經(jīng)迫不及待想在實(shí)戰(zhàn)中試試了(可惜公司沒(méi)有用 vue 的項(xiàng)目 /哭)。
(注:本文轉(zhuǎn)自SweetHouse)