EasyUI添加进度条

添加进度条重点只有一个,如何合理安排进度刷新与异步调用逻辑,假如我们在javascript代码中通过ajax或者第三方框架dwr等对远程服务进行异步调用,实现进度条就需要做到以下三点:

  • 异步刷新之前打开进度条
  • 异步刷新的过程中不断的刷新进度数据
  • 异步刷新之后关闭进度条

详细代码

代码如下所示:

<div id="a" class="easyui-dialog" title="进度" data-options="modal:true,shadow:false,closable:false,closed:true,onClose:function(){$("#a").dialog('destroy');}" style="width:414px">
<div id="progressbardemo" class="easyui-progressbar" style="width:400px"></div>
</div>
$('#div').load("/from/webapp/path/to/dialog.html",function(){
$.parser.parse($(this));
OpenDialogFunction();
});
//后面是正常的异步处理逻辑,只需要记住在异步调用返回结果成功时,关闭dialog即可 function OpenDialogFunction(){
var control = $('#a');
if(!control.length>0){
//如果控件已经销毁,则退出该方法
return;
}
var htmlobj = $.ajax({
url:"xxxxxxxxxxx", //获取进度数据的url
async: false //保持同步
});
var responseText = htmlobj.responseText;
var result = eval('(' + responseText + ')');
if(!result.process_code){
//该代码用于判断返回的信息有错误时如何处理
return;
}
var processNumber = result.progressNumber;
if(processNumber == 0){
control.progressbar('options').text = "用于控制进度条中的文字a";
}else{
control.progressbar('options').text = "用于控制进度条中的文字b";
}
var currentProgressValue = control.progressbar('getValue');
if(currentProgressValue < 100){
control.progressbar('setValue',processNumber);
setTimeout(arguments.callee,100); //回调该方法
}
}

注意重点

  • setTimeout:该方法会间隔一段时间进行调用,具体原理还有待进一步研究。在进度条的实例中主要利用这个方法进行固定时间间隔的回调,刷新进度条的progressValue
  • $('#div').load("/from/webapp/path/to/dialog.html", function () { $.parser.parse($(this)); ().dialog('open')}):使用该形式处理dialog可以有效避免easyUi出现问题,关闭的时候就销毁,打开的时候就重新创建html元素
  • 判断控件是否存在:单纯的判断$('#id')是否为空是不行的,不论控件是否存在都会返回元素,所以需要使用 control.length>0来判断控件存在
  • 实时获取进度号使用同步:因为这个过程涉及到先后关系,所以必须拿到对象后才能将value赋值给progressBar,所以ajax选择async:false同步

EasyUI添加进度条的更多相关文章

  1. QTableView 添加进度条

    记录一下QTableView添加进度条 例子很小,仅供学习 使用QItemDelegate做的实现 有自动更新进度 要在.pro文件里添加 CONFIG += c++ ProgressBarDeleg ...

  2. struts2上传文件添加进度条

    给文件上传添加进度条,整了两天终于成功了. 想要添加一个上传的进度条,通过分析,应该是需要不断的去访问服务器,询问上传文件的大小.通过已上传文件的大小, 和上传文件的总长度来评估上传的进度. 实现监听 ...

  3. c#devexpress GridContorl添加进度条

    demo 的实现图 下边是步骤和代码 1定义 时钟事件,定时的增加进度条的增量. 2:  添加进度条 3;定义字段属性 using System; using System.Collections.G ...

  4. iOS WKWebView添加进度条02

    之前写了一个是关于webview添加进度条的,现在补一个WKWebView进度条. //添加一个全局属性 @property(nonatomic,strong)CALayer *progresslay ...

  5. iOS-仿支付宝加载web网页添加进度条

    代码地址如下:http://www.demodashi.com/demo/11727.html 目前市场上APP常会嵌入不少的h5页面,参照支付宝显示web页面的方式, 做了一个导航栏下的加载进度条. ...

  6. WebView的使用及添加进度条

    实现的效果比较简单类似于微信打开网页,头部有个进度条显示加载进度 下载地址:http://download.csdn.net/detail/qq_29774291/9666941 1.在安卓端加载一个 ...

  7. easyui制作进度条案例demo

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  8. ASP添加进度条

    今日在学习JavaScript所有写个通用的进度条,防止网页假死.让用户更清楚地知道此网页正在进行加载或者处理一些事情,所有加载进度条是一个网站的必要性. 在网页中Page_load首先要加载此进度条 ...

  9. JDK一键部署, 新添加进度条

    JDK部署, 脚本与JDK安装包放在同一目录 然后执行 source ./jdk.sh 稍等进度条100%即可 #******************************************* ...

随机推荐

  1. MyBatis学习(01)之解决mapper绑定异常

    解决mapper绑定异常 HTTP Status 500 - Request processing failed; nested exception is org.apache.ibatis.bind ...

  2. 使用Nginx搭建集群

    反向代理: 1.首先启动一个项目,启动后可以通过http://localhost:8080/getResult访问到接口,如图: 2.修改nginx配置文件,监听www.ouyan.com的80端口, ...

  3. 【叶问】 MySQL常用的sql调优手段或工具有哪些

     MySQL常用的sql调优手段或工具有哪些1.根据执行计划优化   通常使用desc或explain,另外可以添加format=json来输出更详细的json格式的执行计划,主要注意点如下:     ...

  4. SQL SERVER BCP的用法

    转自:https://www.cnblogs.com/fishparadise/p/4809014.html 前言 SQL SERVER提供多种不同的数据导出导入的工具,也可以编写SQL脚本,使用存储 ...

  5. Laravel项目October安装

    October是一个免费,开源,自托管的基于laravel PHP框架CMS平台.在github平台上laravel应用排名第二,可以拿来研究一下.官方介绍:October是一个内容管理系统(CMS) ...

  6. RN导航栏使用

    import PropTypes from 'prop-types'; import React, { Component } from 'react'; import { NavigatorIOS, ...

  7. python类型错误:can only concatenate list (not "str") to list

    TypeError:can only concatenate list (not "str") to list: 类型错误:只能将list类型和list类型联系起来,而不是str类 ...

  8. Redis入门到高可用(九)——有序集合zset

    一.数据结构 集合与有序集合,列表与有序集合的对比 二.主要API zadd 将一个或多个 member 元素及其 score 值加入到有序集 key 当中. zrem 移除有序集 key 中的一个或 ...

  9. mac-破解2018 webstorm

    参考链接:https://blog.csdn.net/pariese/article/details/77540069 后续待整理

  10. [dj]django常用设置

    关于django版本说明: Django 1.11.x 支持 Python 2.7, 3.4, 3.5 和 3.6(长期支持版本 LTS) 最后一个支持 Python 2.7 的版本 Django 2 ...