vue与elementUI进度条组件并控制进度条加载速度(文件下载为例)

vue与elementUI进度条组件并控制进度条加载速度(文件下载为例)

这里采用的“假进度条”,触发下载时先让他平稳加载,最后加载完成直接百分之百。

转载文章:vue中进度条写法_在vue中如何实现页面加载进度条组件_黄海柳的博客-CSDN博客

感谢原作者,非常详细!!!!!!!!!!!

采用progress进度条组件,详见elementUI官网

完整代码如下:

点击确定下载按钮,会显示进度条,并且每隔500ms加载5%。

<div v-show="progressFlag">
    <el-row><span>导出进度:</span></el-row>
    <el-row>
        <el-progress :text-inside="true" 
                     :stroke-width="17"                                                          :percentage="progressPercent">
        </el-progress>
    </el-row>
</div>
<el-button @click="downLoad" size="small" type="primary">确定下载</el-button>

progress属性解释:(status未写,使用默认值)

参数说明类型可选值默认值
percentage百分比(必填)number0-1000
status进度条当前状态stringsuccess/exception/warningprimary
stroke-width进度条的宽度,单位 pxnumber6
text-inside进度条显示文字内置在进度条内(只在 type=line 时可用)booleanfalse
data(){
return{
    progressFlag:flase,//进度条是否显示,初始隐藏
    progressPercent:0//进度条进度显示的初始值
}
},
props: {
    //自增幅度
    step: {
        type: Number,
        default: 5,
    },
    //初始值
    initVal: {
        type: Number,
        default: 0,
    },
    //到一定进度停止
    stopVal: {
        type: Number,
        default: 90,
    },
    //进度条继续到成功
    isOk: {
        type: Boolean,
        default: false,
    },
},
watch: {
    //监听组件props变化决定是否继续加载
    isOk() {
        let progressPercent = this.progressPercent
        let step = this.step
        let timer = setInterval(() => {
            progressPercent = progressPercent + step
            // 加载到百分百完成
            if (progressPercent >= 100) {
                // 关闭定时器
                clearInterval(timer)
                // 加载完成关闭进度条
                this.progressFlag = false
                return
            }
        }, 500)
    },
},
methods:{
    downLoad(){
        //显示进度条
        this.progressFlag = true
        // 初始化后加载进度,加载到百分之多少由stopVal决定
        this.progressPercent = this.initVal
        let step = this.step
        //每500ms执行一次函数(进度条加step=5%)
        let timer = setInterval(() => {
            this.progressPercent = this.progressPercent + step
            // 父组件数据加载完前进度条最多到stopVal的这个百分值
            if (this.progressPercent >= this.stopVal) {
                //停止执行
                clearInterval(timer)
                return
            }
        }, 500)
        //下面就调用接口,调用完成就this.progressPercent=100
        //这部分我写完会更新
    },
}

解释:

setInterval() 函数会每间隔一段时间(直接设置这个时间,如上:500ms)执行一次函数,使用 clearInterval() 来停止执行。

clearInterval() 方法可取消由 setInterval() 函数设定的定时执行操作。

clearInterval() 方法的参数timer:

调用 setInterval() 函数时所获得的返回值,使用该返回标识符作为参数,可以取消该 setInterval() 所设定的定时执行操作。

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ElementUI进度条是一种用于展示任务进度组件。可以通过引入ElementUI库并使用<el-progress>标签来创建进度条。在标签中,可以设置一些属性来自定义进度条的样式和行为,比如设置进度条的类型、是否显示文字、进度百分比等。\[1\] 然而,需要注意的是,从开发角度来看,进度条的真实性是很难把握的。因为在逻辑代码加载完成之前,我们无法准确统计到进度,也无法监控到所有资源的加载情况。因此,进度条更多地是一种用户体验的改善,让用户能够感知到页面加载进度,而不是准确反映实际加载进度。\[2\] 在使用ElementUI进度条时,可以根据需要设置不同的属性来满足需求。比如,可以设置进度条的类型(line、circle、dashboard)、是否在进度条内显示文字、进度百分比等。具体的属性和用法可以参考ElementUI的文档。\[3\] #### 引用[.reference_title] - *1* *2* [vue+elementui进度条组件应用写法_在vue中如何实现页面加载进度条组件](https://blog.csdn.net/qq_48965193/article/details/128150604)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Vue element-ui表格嵌进度条](https://blog.csdn.net/xsq123/article/details/126683629)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值