官方的表格重载方法为什么我这里用不了,很急

提问 已结
69 739
哈哦哈哦
哈哦哈哦 2018-8-10
悬赏:20飞吻
版本:layui 2.3.0 浏览器:谷歌
var tableIns = table.render({
elem: '#LAY_table_user'
,url:'/DeviceClassType/deviceClassType'
,cols: [[
{checkbox: true, fixed: true}
,{field:'id', title: '分类号ID',sort: true}
,{field:'class_byname', title: '分类别名',sort: true} //width 支持:数字、百分比和不填写。你还可以通过 minWidth 参数局部定义当前单元格的最小宽度,layui 2.2.1 新增
,{field:'class_name', title: '分类名称',sort: true}
,{fixed: 'right', width:230, align:'center', toolbar: '#barDemo'}
]]
,id: 'testReload'
,page: true
});
var active = {
// 查询功能

reload: function(){
layer.load(2);
var input = $('form input');
//执行重载
tableIns.reload('testReload', {
page:{
curr: 1
}
,where:{
key:{
id:input[0].value,
class_byname:input[1].value,
class_name:input[2].value,
}
}
});
layer.closeAll();
}

}
$('.demoTable .layui-btn').on('click', function(){
var type = $(this).data('type');
active[type] ? active[type].call(this) : '';
});
回帖
  • @哈哦哈哦 嗯嗯,这个昨天就说了你reload的时候写错了!你用一个变量tableIns接收table.render返回的对象,然后reload的时候用的是这个对象里面的一个reload这个reload只有一个参数config,但是你写的是table.reload(tableId,config)这种形式,你把这两个reload给搞混了,建议看看这一块的文档 http://www.layui.com/doc/modules/table.html#reload
    0 回复
  • @哈哦哈哦 哦,亲,发现了一个重大的问题,tableIns.reload({where:{}})应该是这么写,table.reload(tableId, {})两种写法是不一样的~~,用变量接收render返回的对象里面自带的reload不需要再给tableId了直接加配置信息就可以了~
    1 回复
  • 你说的用不了的症状是什么?进后台了没?还是什么的,单单说用不了这个不知道怎么下手,不过这个比较大的嫌疑是where写错了,没必要套在一个key里面,写成where:{id:value, class_byname: value2}这样就可以了,当然也有可能是其他的原因,具体得看症状是啥
    0 回复
  • 红烧鱼i
    2018-8-10
    这代码贴的 跟坨屎一样 截图会吗 where写错了
    0 回复
  • 0 回复
  • 0 回复
  • @红烧鱼i 麻烦一下,哪里写错了- -
    0 回复
  • @哈哦哈哦 你试一下不要把条件放在一个key:{}里面where直接写{id:XXX, name:XXX}这样就可以了,再试试看,
    0 回复
  • @岁月小偷 试过了,我就写id一个条件也是重载不了。
    0 回复
  • @哈哦哈哦 后台做了处理了吗?能收到你的条件不?有做了数据查询返回不呢?
    0 回复
  • 红烧鱼i
    2018-8-10
    我给你说 重载的时候,只写变的条件,也就说什么page:1你可以不写
    table.reload('idTest', {
    url: '/api/table/search',//变的option配置,直接写这里,跟where同级
    where: {} //变的参数写到where里面
    });
    //只写改变的参数,不变的不要写
    0 回复
  • @岁月小偷 后台在更新,先暂时这样吧,不好意思啊。
    0 回复
  • @红烧鱼i 恩,谢谢
    0 回复
  • @岁月小偷 没办法传到后台去,在加载表格里面加了where的时候值就能传过去了。
    0 回复
  • @岁月小偷 膜拜大神![嘻嘻]
    0 回复
  • 0 回复
  • @岁月小偷 大神在吗? 我的后台代码是这样的,用where传不过去值,但是把where放在初始化表格里面就能取到了。
    0 回复
  • @哈哦哈哦 你reload的代码是怎么写的贴出来看看额。
    0 回复
  • 0 回复
  • @岁月小偷

    谢谢大神,我真的要哭了。
    0 回复
  • @哈哦哈哦 不客气[微笑]
    0 回复
  • @岁月小偷 大神在吗?我这样写表单验证没效果啊,input里面加了 lay-verify="required"
    0 回复
  • @哈哦哈哦 页面的html有吗?看看比较完整的截图额
    0 回复
  • @岁月小偷 这个是弹出层的,我弄一个出来
    0 回复
  • @岁月小偷 yes上面的是写的弹出层的layui-layer-btn0, 转化成submit按钮,好像没用。
    0 回复
  • @哈哦哈哦 额看出问题了,实际上你弹出出来的是想要用layer的按钮来提交表单。但是你的思路是错的,你给layer的按钮添加lay-submit之类的,然后想着点击这个就能提交表单,实际上是错的,因为这个按钮并不属于form所以你加了是没用的,正确的思路是点击确定按钮的时候检查一下form里面有没有提交按钮,如果没有的话你可以给添加一个隐藏的提交按钮,包括lay-filter和lay-submit属性等,然后click一下就可以了,其他的什么提交的监听呀,自定义的校验呀之类的,如果打开的是iframe的尽量在被打开的这个子页面里面做,如果是单页面的,这个提交的监听其实可以在layer弹出之前就可以做了,也可以在success里面打开的回调里面做也可以,点击确定再做不是不行,就是有点浪费,每次点击都会再监听一次没必要,点击layer的提交按钮的功能要尽量做得简单就是看看form里面有没有submit按钮,如果没有js追加一个进去,如果有了就不追加了,然后就是click一下这个按钮,这样子就可以了,至于click了这个按钮会发生什么事情,那个是form的范畴,然后发ajax不要在yes回调里面写,而是在form表单的监听里面写。大概就是这些,调整一下实现再试试看额
    0 回复
  • @岁月小偷 弹出之前做submit监听吗?怎么做到的- -
    0 回复
  • @哈哦哈哦 是否做得到也要看你弹出的是一个iframe还是单页面,单页面是可以的,iframe不行,作用域都不一样了。单页面是可以的,主要点击之前任意时间加了监听就可以,即使这个按钮或者form还不存在。
    0 回复
  • @岁月小偷 我的是单页面的,type:1
    0 回复
  • @哈哦哈哦 那就是可以的,他这个事件不像js的监听$(dom).click(fn)一样必须等这个dom存在再绑定,可以在按钮或者form表单存在之前就绑定了,有点像事件委托,但是不是一个东西,他也不是靠事件委托来处理的,要深入的理解就得自己看看源码了额。
    0 回复