vue-2.0 loading 组件

参考 vue-hackernews-2.0 项目里面的 spinner.vue 组件,做了简单的修改。修改后的组件添加了信息提示的功能,而且对模板做了调整,方便模块化使用。

  • ** 功能描述:**
  1. 列表加载时显示(转圈圈);
  2. 加载成功,结果非空则隐藏加载动画,结果为空时显示"没有符合条件的记录";
  3. 请求失败显示"服务器异常"。
  • ** 看看效果 **
  • ** 使用方法:**

需要提供 list、loading 和 resultCode 配合。list: 列表数据;loading: 加载中;resultCode: 状态码。

<loading :list="list" :loading="loading" :resultCode="resultCode"></loading>
  • ** template **

圈圈效果跟 hackernews 里的一样,这里添加了提示信息,resultCode 需要接口返回,不一定 200,也可以返回一些其它的状态码,跟接口配合好就行。

<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">服务器异常</div>
        </div>
    </div>
</template>
  • ** script **

props 是从父组件里面传过来的数据。

<script>
    export default {
        props: ['list', 'loading', 'resultCode']
    }
</script>
  • ** style **

这里变化也不大,主要是将圈圈放在了一个 div 里面,并给提示信息留了点地方,适合模块化的显示。

<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>
  • ** 总结 **

最近工作中在用 angular,相对来说 vue 更容易上手,文档也很全。把模板和数据交互写在一个文件里很赞,尤其是与外界交互较少的组件,定义和使用都很方便。复杂一点的系统配合 vuex 共享状态,我已经迫不及待想在实战中试试了(可惜公司没有用 vue 的项目 /哭)。

(注:本文转自SweetHouse)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 转载 :OpenDiggawesome-github-vue 是由OpenDigg整理并维护的Vue相关开源项目库...
    果汁密码阅读 23,334评论 8 124
  • 来源:github.com Vue.js开源项目速查表:https://www.ctolib.com/cheats...
    zhangtaiwei阅读 14,032评论 1 159
  • 1.在类的构造函数前加上static会报什么错?为什么? 答:在构造函数如果有public修饰的静态构造函数时会报...
    偏城御阅读 3,030评论 0 1
  • 今天是大一新生开学,一大早学校的安静就被打破了,我舍友六点多就起来,因为她们要接待新生,我在宿舍睡到八点才起来,楼...
    陪伴是最长情的告白_2b7a阅读 1,675评论 0 0
  • 一群被电影召唤的人,汇聚到了Mtime,一边享受着电影赋予这个世界的美好时光,一边孜孜不倦的将电影的点点滴滴汇入到...
    iamxy阅读 6,323评论 0 2

友情链接更多精彩内容