vue-2.0 loading 組件

參考 vue-hackernews-2.0 項(xiàng)目里面的 spinner.vue 組件,做了簡單的修改。修改后的組件添加了信息提示的功能,而且對模板做了調(diào)整,方便模塊化使用。

  • ** 功能描述:**
  1. 列表加載時(shí)顯示(轉(zhuǎn)圈圈);
  2. 加載成功,結(jié)果非空則隱藏加載動畫,結(jié)果為空時(shí)顯示"沒有符合條件的記錄";
  3. 請求失敗顯示"服務(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">沒有符合條件的記錄</div>
            <div v-if="resultCode != '200'" class="loading-text">服務(wù)器異常</div>
        </div>
    </div>
</template>
  • ** script **

props 是從父組件里面?zhèn)鬟^來的數(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,相對來說 vue 更容易上手,文檔也很全。把模板和數(shù)據(jù)交互寫在一個(gè)文件里很贊,尤其是與外界交互較少的組件,定義和使用都很方便。復(fù)雜一點(diǎn)的系統(tǒng)配合 vuex 共享狀態(tài),我已經(jīng)迫不及待想在實(shí)戰(zhàn)中試試了(可惜公司沒有用 vue 的項(xiàng)目 /哭)。

(注:本文轉(zhuǎn)自SweetHouse)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)載 :OpenDiggawesome-github-vue 是由OpenDigg整理并維護(hù)的Vue相關(guān)開源項(xiàng)目庫...
    果汁密碼閱讀 23,419評論 8 124
  • 來源:github.com Vue.js開源項(xiàng)目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei閱讀 11,942評論 1 159
  • 1.在類的構(gòu)造函數(shù)前加上static會報(bào)什么錯(cuò)?為什么? 答:在構(gòu)造函數(shù)如果有public修飾的靜態(tài)構(gòu)造函數(shù)時(shí)會報(bào)...
    偏城御閱讀 467評論 0 1
  • 今天是大一新生開學(xué),一大早學(xué)校的安靜就被打破了,我舍友六點(diǎn)多就起來,因?yàn)樗齻円哟律?,我在宿舍睡到八點(diǎn)才起來,樓...
    陪伴是最長情的告白_2b7a閱讀 262評論 0 0
  • 一群被電影召喚的人,匯聚到了Mtime,一邊享受著電影賦予這個(gè)世界的美好時(shí)光,一邊孜孜不倦的將電影的點(diǎn)點(diǎn)滴滴匯入到...
    iamxy閱讀 2,182評論 0 2

友情鏈接更多精彩內(nèi)容