开发笔记二

1.bootstraptable分页后搜索,想重置页码

首先,直接$("#").bootstrapTable('refresh')是不行的,这样只能刷新当前页数据;

方法一:直接destroy然后重新渲染;

方法二:先$("#").bootstrapTable("resetSearch")重置参数,然后$("#").bootstrapTable('refresh')刷新。

$("#").bootstrapTable的参数一共有

[
'getOptions',
'getSelections', 'getAllSelections', 'getData',
'load', 'append', 'prepend', 'remove', 'removeAll',
'insertRow', 'updateRow', 'updateCell', 'updateByUniqueId', 'removeByUniqueId',
'getRowByUniqueId', 'showRow', 'hideRow', 'getHiddenRows',
'mergeCells',
'checkAll', 'uncheckAll', 'checkInvert',
'check', 'uncheck',
'checkBy', 'uncheckBy',
'refresh',
'resetView',
'resetWidth',
'destroy',
'showLoading', 'hideLoading',
'showColumn', 'hideColumn', 'getHiddenColumns', 'getVisibleColumns',
'showAllColumns', 'hideAllColumns',
'filterBy',
'scrollTo',
'getScrollPosition',
'selectPage', 'prevPage', 'nextPage',
'togglePagination',
'toggleView',
'refreshOptions',
'resetSearch',
'expandRow', 'collapseRow', 'expandAllRows', 'collapseAllRows',
'updateFormatText'
]

有时间的可以一一研究下。

2.layer弹层问题。

表现:错乱,样式和行为混乱。layer.msg在左侧弹窗了而非在页面中间,而且弹出后不消失,再次触发后可以消失了也在中间了但是别的组件也消失了。

原因:看到这种比较怪异的现象,一般就会有一个方向就是ID冲突。经过审查和查看layer源码,发现是id重复了,后经排查,是因为同一个页面出现了两个不同版本的layer,而原因就是有一处要使用layim通信功能,所有layim中包含了另一个版本的layer。

解决方法:(1)统一版本;(2)自己写一个方法,排重重复id。逻辑也很简单,如下:

1   (function loop(n) {
2         if($("#layui-layer"+layer.index)[0]) {
3             layer.index++;
4             loop(n+1);
5         } else {
6             return;
7         }
8   })(0);

就是用了上次说的批量打印的时候canvas画图片时异步加载导致被覆盖的解决方法。

而且,layim中index是从100000开始的,layer中是从0开始。这与加载顺序也有关系,比如,清缓存刷新时,由于先加载的是layer,后加载的layim,所有index是后者的,所以index没有问题,生成的id也就没有问题,(不过当前应用场景下,弹窗100000次窗口之后,如果不做排重,可能就会出现同样的现象,统一版本另当别论);普通刷新不清缓存,此时就由于加载缓存,所有加载的是前者的index,就出现了该问题。

而IE上又没有出现该问题,这就又上升到浏览器内核的问题了。

猜你喜欢

转载自www.cnblogs.com/ljwsyt/p/9566637.html