关于table.render渲染的请求数据问题

提问 未结 11 660
欧米伽
欧米伽 2019-4-9
悬赏:20飞吻
版本:layui 2.4.5 浏览器:
关于table.render 方法中同时设置了url、 data两个属性,怎么设置在点击分页的时候才去请求url得到异步数据,也就是刚开始渲染表格时的数据来自data。
回帖
  • 同时存在url和data的话以url为准data无效,所以如果要用里面的data渲染,必须排除url,比如一开始可以设置data,然后url为null,render之后用tableIns.config.url=需要的url,这样子初始化之后但凡有重新请求的就会以url为准,如果只是需要在reload的时候才变成url的那么可以在reload的时候修改url
    0 回复
  • 欧米伽
    2019-4-9
    @岁月小偷 嗯,这里面有个矛盾的地方,如果不请求url,就没法获取页码数
    0 回复
  • 主要是你这个需求本身就比较矛盾,为啥render的时候不干脆也用url呢
    0 回复
  • 欧米伽
    2019-4-9
    @岁月小偷 我这需求主要是为减少请求:加载模板时顺带把第1页的数据搞定了,不需要再去根据url请求1次。然后其他页的数据再去根据url来获取
    0 回复
  • 欧米伽
    2019-4-9
    @岁月小偷 看来也只能这样了,除非升级渲染里面的机制。
    0 回复
  • @欧米伽 那也就是说你加载模板的时候就知道总条数有多少了?如果是的话你可以用一些方法给data填充,就是将他的length变成你接口返回得到的数据总条数,然后没有的就填充默认数据[]
      //执行一个 table 实例
    var data = [{id: 1}, {id: 2},{id: 3}, {id: 4},{id: 5}, {id: 6},{id: 7}, {id: 8},{id: 9}, {id: 10}];
    data = Array.apply(null, Array(100)).map((item, index) => data[index]||[]);
    var tableIns = table.render({
    elem: '#demo'
    ,height: 420
    //,url: '/demo/table/user/' //数据接口
    ,data:data
    ,title: '用户表'
    ,page: true //开启分页
    ,toolbar: 'default' //开启工具栏,此处显示默认图标,可以自定义模板,详见文档
    ,totalRow: true //开启合计行
    ,cols: [[ //表头
    {type: 'checkbox', fixed: 'left'}
    ,{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left', totalRowText: '合计:'}
    ,{field: 'username', title: '用户名', width:80}
    ,{field: 'experience', title: '积分', width: 90, sort: true, totalRow: true}
    ,{field: 'sex', title: '性别', width:80, sort: true}
    ,{field: 'score', title: '评分', width: 80, sort: true, totalRow: true}
    ,{field: 'city', title: '城市', width:150}
    ,{field: 'sign', title: '签名', width: 200}
    ,{field: 'classify', title: '职业', width: 100}
    ,{field: 'wealth', title: '财富', width: 135, sort: true, totalRow: true}
    ,{fixed: 'right', width: 165, align:'center', toolbar: '#barDemo'}
    ]]
    });
    tableIns.config.url = '/demo/table/user/';
    0 回复
  • 欧米伽
    2019-4-9
    @岁月小偷 这个想法可是可以,只是如果数据记录够大,里面需要填充的数就太多了
    0 回复
  • @欧米伽 嗯,数据太大的话建议你就调整一下,在进入模板就不要去请求了,表格的请求等表格render的时候自己去请求,当然具体情况还是要具体分析
    0 回复
  • 欧米伽
    2019-4-9
    @岁月小偷 好的,谢谢您!
    0 回复
  • @欧米伽 不客气[微笑]
    0 回复