数据表格中使用表单元素,如何在表单元素绑定的事件获取整行数据

提问 未结 5 395
张家军
悬赏:20飞吻


如图,我想在开关切换时可以获取整行的数据,和工具条的获取数据一致
回帖
  • 这个数据一致不知道我理解的对不对,如果你说的一致是说switch监听中的obj跟工具监听中的obj一样这个不太现实,但是如果你需要的是当前行的数据就好办。思路就是table的缓存中找,每个table的当前页面的数据其实是放在一个table.cache[tableId]中,那么要得到当前行的数据就是当前开关所在tr的data-index下标。
    0 回复
  • xanthuim
    2019-3-15
    @岁月小偷 能具体点吗?我现在也遇到点击switch按钮,获取当前行的数据需求。但是form.on('switch')方法只能获取switch的数据,你的意思是从table的缓存中获取吗?
    0 回复
  • @xanthuim 你layui的版本是什么,2.4.5的话可以参考下这个,在之前的版本有一个问题是无法百分之百的确定当前表格实例的id是什么,除非你严格遵守一个规则就是不要作死在render的时候指定一个跟原始table不一样的id,可以设置一样的,也可以不设置,默认就是那个id,后面的话可以通过一些方式方便得到,当然了,你要是说这个监听只为了负责修改这个表格的数据,而且表格的实例id可以确定的,那么代码里面的tableid也可以写死,不过思路不变,就是找到对应的layui.table.cache[tableId][trIndex][fieldName] = nodeValue
    // 监听表格中的下拉选择将数据同步到table.cache中
    form.on('select(city_select)', function (data) {
    var selectElem = $(data.elem);
    var tdElem = selectElem.closest('td');
    var trElem = tdElem.closest('tr');
    var tableView = trElem.closest('.layui-table-view');
    table.cache[tableView.attr('lay-id')][trElem.data('index')][tdElem.data('field')] = data.value;
    });
    0 回复
  • xanthuim
    2019-3-15
    关键是我怎么获取到当前处于哪一行呢?switch貌似不能得到吧?
    0 回复
  • xanthuim
    2019-3-15
    我在模板中表单加了个data-id属性(事实上我都不知道这个属性哪里的,也没看到文档,就无意看到的),然后这样获取值,满足我的需求。
    form.on('switch(filterVersionState)', function (obj) {
    var id = obj.elem.attributes["data-id"].value;
    var versionState = obj.elem.checked ? 1 : 0;
    alert(id + "-" + versionState);
    ....
    }
    0 回复