• EasyUI添加进度条


    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="414px">
        <div id="progressbardemo" class="easyui-progressbar" style="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同步
  • 相关阅读:
    leetcode 【 Merge Two Sorted Lists 】 python 实现
    leetcode 【 Remove Duplicates from Sorted List II 】 python 实现
    leetcode 【 Remove Duplicates from Sorted List 】 python 实现
    leetcode 【 Remove Nth Node From End of List 】 python 实现
    leetcode 【 Linked List Swap Nodes in Pairs 】 python 实现
    i++操作非原子的验证代码
    黑马MySQL数据库学习day03 级联 多表查询 连接和子查询 表约束
    mysql 原理 ~ sql查询语句
    tidb 架构 ~Tidb学习系列(3)
    mysql 查询优化 ~ 善用profie利器
  • 原文地址:https://www.cnblogs.com/mrnx2004/p/10475181.html
Copyright © 2020-2023  润新知