layui 数据表格 table的一些技巧,及自定义模板的使用

table数据 有时总会有判断男女  类型之类的,所以通过下列方法即可轻松解决。

当然,这样在前台直接写死的 貌似不大好,没关系,我们可以通过自定义模板的方法 数据都来自后台,前台只做判断,如:

效果如下:

关于table表格时间格式的调整:

上图的方法,试过这么写,但有时候就不大好使,所以 下面推荐另一种方法, 

 上面是图片,代码如下:

<script>
    ..............其他代码逻辑

//这相当于一个方法
Date.prototype.Format = function (fmt) { //author: meizz
        var o = {
            "M+": this.getMonth() + 1,                 //月份
            "d+": this.getDate(),                    //日
            "h+": this.getHours(),                   //小时
            "m+": this.getMinutes(),                 //分
            "s+": this.getSeconds(),                 //秒
            "q+": Math.floor((this.getMonth() + 3) / 3), //季度
            "S": this.getMilliseconds()             //毫秒
        };
        if (/(y+)/.test(fmt))
            fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)
            if (new RegExp("(" + k + ")").test(fmt))
                fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
        return fmt;
    }
</script>

<script id="createTime" type="text/html">
    {{#
    var date = new Date();
    date.setTime(d.createTime);
    return date.Format("yyyy-MM-dd hh:mm:ss");
    }}
</script>

第二个方法,copy来的,不知哪位大佬写的 用到了,就一到总结在此吧。

关于自定义模板,再加一个小例子吧,如下

table.render({
            id: 'orderList',
            elem: '#orderList',
            url: 'orderList',
            cols: [[
                {type:'numbers',title:'序号',width:'5%',align:'centenr'},
                {field:'patientName',title:'患者姓名',width:'10%',templet:"#patientName"},
                {field:'orderCreateTime',title:'时间',width:'14%',templet:"#orderCreateTime"},
                {field:'longFlag',title:'是否长期',width:'10%',align:'centenr',templet:"#longFlag"},
                {field:'listOrder',title:'内容',width:'50%',templet:"#listOrder"},
            ]],
            page: true,
            // height: 'full-83',
            where : {
                patientId : patientId,
                visitId : visitId,
            }
        });

 这里的url返回来的数据与layui规定的数据有差异,是个嵌套的数据,上面demo中患者姓名,时间,是否长期,内容,皆为通过自定义模板取得,如下所示:

此模板为获取内容,d.listOrder 就是嵌套里面的一个list集合,通过模板传值,
然后通过jquery的方法遍历解析,返回遍历后且拼装好的数据

<script type="text/html" id="listOrder">
            {{#  if(d.listOrder == ""){ }}
            {{# } else if (d.listOrder==null){ }}
            {{#  } else { }}
            {{#
                var fn = function(list){
                var len =list.length;//传入的list的长度
                var strHred = '';
                var strEnd = '';
                var str = '';
                $.each(list, function(i,item){
                    if(len <= 1){ //小于等于则表示只有一条记录
                        str =item.orderText +'<br>';
                    }else{
                        //两条记录以上时,
                        if(i == 0){  //等于0表示第一条数据,加前缀
                        strHred = '┌'+item.orderText +'<br>';

                        }else if(i == len - 1 ){ //此为最后一条数据,加前缀
                        strEnd  = '└'+item.orderText +'<br>';
                        }else{
                        //拼接数据
                        str = str +'&nbsp;&nbsp;'+item.orderText +'<br>';
                        }
                    }
                });
                //返回拼接好的值
                return strHred+str+strEnd;
                    };
            }}
            <div>{{ fn(d.listOrder) }}</div>
            {{#  } }}
        </script>

如下图内容的最终效果 

 

 

 

//贴个短点的,listOrder集合中的都是同一个人,不同数据的,故只遍历一次,取出姓名即可
<script type="text/html" id="patientName">
            {{#
                var fn = function(list){
                var str = '';
                $.each(list, function(i,item){
                    if(i == 0){
                        str = item.patientName;
                    }
                });
                return str;
                };
            }}
            <div>{{ fn(d.listOrder) }}</div>
        </script>

前台接收的数据如下:

 

 因为都是从嵌套的list当中取  所以表格的field属性 我全都写成的listOrder,如下图所示;

虽然依然也能够取出来值,但是显示的时候却出现意外,宽度设置无效,所有通过模板遍历取值的列,他们的宽全都一样,无法更改,如:

 所以F12查看了下元素,发现

 他们都用了同一个样式,所以导致宽度也全都默认一样。解决办法:

根据从嵌套list中取值的字段的变量名 给予命名 field属性即可。

  • 8
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值