工作笔记一——杂项

近期做的项目中遇到一些棘手的问题,解决的过程用到很多知识,在此记下主要的问题与解决方法。

页面功能介绍:获取五张表格的大量数据(大概有几千条记录),然后到前台显示在table里面,实现行列汇总。页面保存也是要保存这些数据的(几千条)。大概有三个如下的表格保存着大量数据:


1.页面大量计算的解决方案

如果原来页面有默认值,要显示默认值,并且要显示行列汇总。数据少的时候,在前台直接使用jQuery的trigger触发计算是完全可行的,但是数据量稍微多一点,页面就会卡死甚至浏览器会崩溃。所以我采用的解决方案是在前台计算行列的汇总值展示,不用trigger的方式。这里我采用了webworker。

使用方法如下:

            var worker = new Worker("${base.contextPath}/resources/js/cal_job.js");//给异步计算传递参数worker.postMessage(info);//接收到计算后的值的回调worker.onmessage = function (evt) {//evt.data就是worker计算后的返回数据vm.sumData = evt.data;}

在计算的cal_job.js里面:

onmessage = function (evt) {//前面传过来的参数(info)var calcData = evt.data;//自己的计算//......//将计算结果的数据发送回主线程postMessage({name:'value'});
}

这样在主页面拿到计算后的行列汇总值,直接$(element).text(‘xxx’)就可以了。

2.同时调用几个保存接口,都是异步的,如何保证全部保存完后再执行相应的方法

页面涉及到五张表的数据保存,为了提高效率,将这五个实体的保存分别放到各自对应的controller中,然后异步保存。保存之前会有一个layer的loading图表,保存结束后这个图标要消失。这就要涉及捕获全部保存后的时刻了。有一个简单的方法,是采用计数的方式,即先定义一个标记变量=0,在每一个保存成功的回调里面给这个变量+1,然后判断这个变量的值,如果等于5的话就关闭loading的图标。我没采用这种方法,因为比较笨拙。我选择的是Promise对象的all方法。由于Promise在IE上兼容有些问题,可以参考下面第四条。

                        layer.msg('数据保存中...', {icon: 16, time: 0});var promises = [this.saveRe(), this.savePat(), this.saveTrn(), this.saveFB(), this.saveOutsource()];/***把所有的异步请求封装成一个promise对象,针对这个promise进行监听回调,可以保证在保存完成后跳转页面***/Promise.all(promises).then(function (data) {layer.closeAll();}).catch(function () {layer.alert('保存出错');})

3.jQuery事件触发完成后执行某个方法

如果要在trigger('change')之后执行某一方法,要使用Deferred对象来完成。比如我在整个表格都触发了change事件之后,再反转某个标志位,就可以就可以这样做:

                    vm.isInit = true;var df = $.Deferred();//获取要进行change的行var $rows = $('#pat-scroll-tr-0').find('input');//定义一个方法任务var serviceTask = function (dtd) {//在这里触发change事件$rows.trigger('change');dtd.resolve();return dtd.promise();};//在trigger完成后再执行的操作$.when(serviceTask(df)).done(function () {vm.isInit = false;});

4.Promise对象在页面无法使用

Promise对象在IE上不兼容,可以使用polyfill进行转换,简单的解决方法就是在页面上引入cdn的polyfill.js就可以了:

<script src="https://cdn.polyfill.io/v2/polyfill.min.js"></script>

5.layer控件的弹窗显示小bug

layer控件在火狐上显示的小问题:

在页面上加入以下样式调整即可:

/**解决火狐下的tip显示的bug*/.custom-padding > .layui-layer-content {padding: 0px;padding-left: 20px;}
现在就可以正常渲染了:




转载于:https://www.cnblogs.com/jerryyj/p/9621563.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/268025.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Coolite 中GridView行按钮取行ID并调用服务器端代码

效果图&#xff1a; 关系代码&#xff1a; <Command Handler"if(commandbutSelectReocrd){strrecord.data.SessionId; #{AjaxMethods}.SelectRecord(str);}" /> 全部html代码&#xff1a; 代码 <ext:GridPanel ID"GridPanel1"Height"325&quo…

Flink的三种执行模式STREAMING和BATCH和AUTOMATIC

执行模式 执行模式三种 BATCH模式的两种配置方法 什么时候选择BATCH模式

RabbitMQ基础概念详细介绍

转至&#xff1a;http://www.ostest.cn/archives/497 引言 你是否遇到过两个&#xff08;多个&#xff09;系统间需要通过定时任务来同步某些数据&#xff1f;你是否在为异构系统的不同进程间相互调用、通讯的问题而苦恼、挣扎&#xff1f;如果是&#xff0c;那么恭喜你&#x…

信号与系统(中)

第四章 线性时不变系统的时域分析 4.1连续时间系统的时域分析 微分方程的求解 齐次解特解完全解起始状态到初始状态的转换 冲激平衡法连续时间系统的零输入响应与零状态响应 双零法4.2离散时间系统的时域分析 迭代法时域经典法双零法差分方程的求解 齐次解特解完全解离散时间系…

RocketMq中的perm属性2 4 6用于设置对当前创建Topic的操作权

RocketMq中的perm属性用于设置对当前创建Topic的操作权限 2表示&#xff1a;只可以写 4表示&#xff1a;只可以读 6表示&#xff1a;可以进行读写

css新奇技术及其未来发展

1.图像替换技术&#xff1a; 图像替换技术是指使用图像替换页面中文本的功能&#xff0c;类似与在页面中插入图像&#xff0c;只是这种方法更为方便&#xff0c;易于代码管理。通常来说&#xff0c;设计者习惯使用有意义的图像去替换一些标题&#xff0c;logo和某些特定的页面背…

八皇后问题求解动态图形演示

这是我以前用Delphi写的一个教学软件。内容是关于“八皇后”问题的求解动态图形演示。这个软件采用多线程设计&#xff0c;包含了递归回溯与非递归回溯两种算法&#xff0c;还可随时调整演示速度&#xff0c;界面共有五种前景和五种背景图形。包含所有源程序和资源文件。 以…

HashMap中最多只允许一条记录的键为Null,允许多条记录的值为Null

Map主要用于存储健值对&#xff0c;根据键得到值&#xff0c;因此不允许键重复(重复会覆盖)&#xff0c;但允许值重复。 Hashmap是一个最常用的Map&#xff0c;它根据键的HashCode值存储数据&#xff0c;根据键可以直接获取它的值&#xff0c;具有很快的访问速度。遍历时&#…

ORA-12154: TNS:could not resolve the connect identifier specified. Solved.

进入系统属性页面 rundll32.exe shell32.dll,Control_RunDLL sysdm.cpl,,3 并添加系统环境变量 ORACLE_HOME ${path} TNS_ADMIND ${path}\network\admin NLS_LANG AMERICAN_AMERICA.ZHS16GBK 其中${path} 从http://www.oracle.com/technetwork/topics/winx64soft-089540.…

LinkedHashMap的使用

LinkedHashMap LinkedHashMap是HashMap的一个子类&#xff1b; LinkedHashMap保存了记录的插入顺序&#xff0c;在用Iterator遍历LinkedHashMap时&#xff0c;先得到的记录肯定是先插入的&#xff1b; 在遍历的时候会比HashMap慢&#xff0c;不过有种情况例外&#xff0c;当H…

摩托罗拉:未来一切以手机为中心

人类有计算机以来&#xff0c;计算工具曾经是强大的计算机&#xff0c;个人电脑的出现&#xff0c;PC不但是重要计算的工具&#xff0c;同时它是互联网终端&#xff0c;改写了人类工作和生活的格局。未来的计算会是往什么方向发展&#xff0c;移动互联网成为人们关注的焦点&…

JQuery中this指向

如果是元素操作&#xff0c;$(this)就可以指向当前元素 <div id"test">谢小超</div> <script type"text/javascript">$("test").on(click,function(){var x $(this).html();alert(x);}) </script> 如果是方法&#xff0…

com 对象与其基础 rcw 分开后就不能再使用_如何使用 Kubeflow 机器学习流水线

作者&#xff1a;George Novack翻译&#xff1a;Bach&#xff08;才云&#xff09;校对&#xff1a;星空下的文仔&#xff08;才云&#xff09;、bot&#xff08;才云&#xff09;为什么要使用机器学习流水线现在&#xff0c;机器学习流水线&#xff08;Machine Learning Pipel…

markdown一边写一边预览_markdown文章编辑利器-基础篇

John Gruber(约翰-格鲁伯)创造了一个简单的语法&#xff0c;却是文章笔记的编辑利器&#xff0c;看看他是怎么做的吧。约翰君一天躺在床上正在思考着给烦人的老总提交会议笔记&#xff0c;一边写一边碎碎念&#xff0c;让我写会议笔记还不如让我写代码。约翰君越想越气&#xf…

【C#】解析C#中JSON.NET的使用

目录结构&#xff1a; contents structure [-]JSON.NET简介Serializing and Deserializing JSONJson ConvertJson SerializerLINQ TO JSONConverting XMLConvert JSON to XMLConvert XML to JSON原文链接JSON.NET对于.NET来说是一个非常高效的JSON框架。 1. JSON.NET的简介 使用…

android闹钟唤醒不准的原因_俄罗斯睡眠专家:闹钟铃声选错了,可能扰乱你的内分泌...

对不少人来说&#xff0c;起床是件和天性对抗的事。而“自然醒”和“被闹钟吵醒”&#xff0c;完全是两种不同的睡眠体验。近日&#xff0c;俄罗斯一项新研究指出&#xff0c;错误的闹铃声可能给健康带来负面影响。《生命时报》结合研究采访专家&#xff0c;解读闹铃声对身体的…

软件工程个人作业01

|小学生四则运算| 设计思想&#xff1a; 1 程序生成数据&#xff0c;并存到数据库Mysql; 2用户输入数据 3程序接收数据&#xff0c;并判断数据 4返回信息。 源程序代码&#xff1a; java文件 package pers.sun.operateion;//产生一个算式&#xff0c;及相应的结果public class …