layui table重载的时候,如果where传参包含数组,是只覆盖新数据的长度的。
比如
table.reload('test',{
,where:{
msg:data
}
,page:{
curr:1
}
)
假设,第一次重载时,data=[1,2,3,4];
那么实际传到后台的数据就是msg=[1,2,3,4];
但如果,第二次重载时,data=[a,a,a];
那么实际传到后台的数据是msg=[a,a,a,4];
官方文档没有说明,坑了我好几个小时,才排除错误,故写下来记录一下。
解决方法很简单!
在表格渲染的时候加入一个回调函数
table.render({
elem: '#test'
,url:'test'
,cols: [[
//填写表头参数
]]
//利用done回调函数解决?
,done: function(res, curr, count){
this.where={};
}
});
但是!
首先,一般重载是用于表格条件筛选。那如果重载加上分页的话,上述解决方法就不得行了。
因为清空了where缓存,会导致翻页时,没有带上筛选条件。
究极解决方法
通过框架源代码可知,翻页既不用loader也不用reload,至此,可以放心修改翻页的函数。
在table.js中修改此处 F.prototype.reload函数:
i.config.where = {}
//在e = e || {}....上面添加如上一行代码即可。
e = e || {}, delete i.haveInit