layui数据表格渲染对象中的对象-修改源码实现

layui数据表格不支持 返回数据中关联其他数据 明明有数据就是没有显示

`{ title:'部门名称',templet:'<div>{{d.department.name}}</div>'} 

之前是写模板 后来就烦了于是就开始搜索之路 发现都没什么用
还是老老实实看源码吧 因为我的是压缩的 于是我就去gitee
看源码在这里插入图片描述找到了,赋值是直接 把字段放进去的 怪不得获取不到
看到这个我就去 压缩过的table.js中找 我在修改一下获取数据的操作 在这里插入图片描述
测试可以
在这里插入图片描述

//通过 对象.属性 获取值
function objgetparm(data,str) {
    let split = str.split(".");
    let obj=data[split[0]];
    for (let i=1;i<split.length;i++)
        obj=obj[split[i]];
    return obj;
}

还有关于layui form val自动赋值也是 不支持 关联关系 很麻烦 于是自己写了个简单的

// data 数据 和  obj 赋值集合的dom对象 根据name名称 来 映射数据
function setvalobj(data,obj){
    let elemen= obj!=null? obj:document.getElementsByTagName("input"),e;
    for (let n of elemen){
        e=n.getAttribute('name');
        if(e==null) continue;
        let k = objgetparm(data,e);
        if(k!=null)
            n.value=k;
    }
}

修改后的。。。

function setvalobj(data,obj,funA,l){
    l = l==null? "value":l;
    let elemen= obj!=null? obj:document.getElementsByTagName("input"),e,k,t;
    for (let n of elemen){
        e=n.getAttribute('name');
        if(e==null) continue;
         k = objgetparm(data,e);
        if(k==null)continue;
        t=n.getAttribute("type");
        switch (t) {
            case 'radio':
                if(k==n[l]){//如果 我获取的值和 val本身的值一样就选中
                    n.setAttribute('checked',true);
                }
                break;
            case 'checkbox':
                if(k instanceof  Array){
                    if(k.includes(parseInt(n[l]))){
                        n.setAttribute('checked',true);
                    }
                }else if(k==n[l]){
                    n.setAttribute('checked',true);
                }
                break
            default:
                n[l]=k;
                break;
        }
    }
    if(funA) funA();
}

可能是因为效率才没有加吧 我也没有更好的方法 如果有更好的方法
请大佬不吝赐教

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值