layuiAdmin.pro(单页版) 页面自动刷新功能
悬赏:20
收藏
问题: 页面下的自动刷新功能, 影响了其他页面。
问题追溯:
由于layuiAdmin.Pro 采用了单页面方式,所有页面放置在统一DIV下,
每个业务页面仅局部替换, 所有当页面设置了 window.setInterval(); 其他是全局的设置项,所有业务页面都是调用。
问题代码: [pre]
var xxxxProcessRefFunc = function(){
$('#search').click();
}
window.setInterval(xxxxProcessRefFunc, 10000); //每10秒执行一次
[/pre]
改动后的代码介绍:
业务名: xxxx
ID为search的按钮需绑定属性: xxxxAutoRef="true" 或者 xxxxAutoRef="false" (每个页面必须不一样,避免冲突)
属性说明:
xxxxAutoRef : 是否开启自动刷新: true / false;
initSubTime :间隔秒数, 固定不变,当搜索后按照此时间判断;
subTime: 当前剩余时间秒数, 默认时间需与initSubTime一致, 后续无需手动处理;
HTML:
[pre]
<div class="layui-input-inline">
<label class="layui-form-label">自动刷新</label>
<input type="checkbox" lay-filter="xxxxAutoRefCheckbox" lay-skin="switch" />
</div>
<button id="search" xxxxAutoRef="false" subTime="9" initSubTime="9" class="layui-btn" data-type="reload">搜索</button>
[/pre]
JS:
[pre]
form.on("switch(xxxxAutoRefCheckbox)", function(data){
if(data.elem.checked){ //开启
$("#search[xxxxAutoRef]").attr("xxxxAutoRef", "true");
}else{
$("#search[xxxxAutoRef]").attr("xxxxAutoRef", "false");
}
});
//定时刷新 定时任务, 先清除, 后新增
if(typeof(xxxxInterval) != 'undefined'){
window.clearInterval(xxxxInterval);
}
var xxxxProcessRefFunc = function(){ //处理刷新任务
var _searchBtn = layui.$("#search[xxxxAutoRef]");
if(_searchBtn.length > 0){
if(_searchBtn.attr("xxxxAutoRef") != "true"){ //未开启
return _searchBtn.text("搜索");
}
//开启定时刷新
var subTime = _searchBtn.attr('subTime') * 1;
if(subTime <= 0){
layui.$('#search').click();
subTime = _searchBtn.attr('initSubTime') * 1;
}
_searchBtn.text("搜索("+subTime+"s)");
subTime--;
_searchBtn.attr('subTime', subTime);
}else{ //当查询控件不存在不在内,说明不是本页面,删除该定时任务器
window.clearInterval(xxxxInterval);
}
}
var xxxxInterval = window.setInterval(xxxxProcessRefFunc, 1000); //每秒执行
[/pre]
这样就再也不会出现定时刷新页面影响其他页面啦。。face[可爱] face[可爱] ,并且加入了控制按钮, 效果图如下:
img[http://oss.xxpay.vip/img/39292175-af62-4870-9e26-b0308da8e4433800001856417383676.png]
-
2020-10-21 10:00:38
非常实用的一个功能face[good]
0
-
2020-11-23 17:04:33
@你好啊 一起加油!face[嘻嘻]
0