配置文件html-table展示(二)

2018-03-21  本文已影响22人  两点半的杂货铺

一、几个常用js指令

(1.1) 自定义string方法String.prototype,

因为所有的封装了字符串的所有方法都在这个函数,我们可以写一个类似于python中format函数自定义js的string思路
    String.prototype.format=function (kwargs) {
        console.log(this);
        //用正则匹配要替换的内容
        var ret = this.replace(/\{(\w+)\}/g,function(km,m){
                //return 会替换完后返回替换后的值,m是正则匹配的占位符
                return kwargs[m];
        });
      //返回替换后的字符
        return ret;
    };
var v = "测试经验:{age}-{gender}"
alert(v.ceshi({"age":'28','gender':'男'}))

二、思路

访问整体框架页面后, 触发ajax请求,触发数据展示

    <h1>资产列表</h1>
    <table border="1">
        <thead id="table_th">
        </thead>
        <tbody id="table_td">
        </tbody>
    </table>
 $(function () {
        init();
    })

    function init() {
        $.ajax({
            url:'/asset-json.html',
            type:'GET',
            dataType:'JSON',
            success:function (result) {
                initHeader(result.table_config);
                initBody(result.table_config,result.data_list);
            }
        })
    }
function initHeader(table_config) {
        var tr = document.createElement('tr')
        /**循环保存的配置文件列表**/
       $.each(table_config,function (k,item) {
        /**决定是否显示**/
           if(item.display) {
               var th = document.createElement('th')
               th.innerHTML = item.title;
               $(tr).append(th)
           }
       })
        $('#table_th').append(tr)
    }
                         kwargs = {}
                        $.each(colConfig.text.kwargs,function (k,v) {
                            if (v[0] == "@"){
                                kwargs[k] = row[v.substring(1,v.length)]
                            }else{
                                kwargs[k] = v
                            }
                        })

最后的逻辑

       function initBody(table_config,data_list) {

       /** data_list 是数据库查回的数据,有多少条就有多少行 **/
        $.each(data_list,function (k,row) {
                var tr = document.createElement('tr')
                /** table_config 是标题标题管的是多少列 **/
                $.each(table_config,function (k,colConfig) {
                    if(colConfig.display) {
                        //colConfig.text.content = "{m}-{n}"为格式化的字符串
                        //colConfig.text.kwargs = "{'n':"机柜",'m':"xx`"}"替换的格式内容
                       //自定义string方法
                        //封装了字符串的所有方法
                        kwargs = {}
                        $.each(colConfig.text.kwargs,function (k,v) {

                            if(v.substring(0,2) == "@@"){
                                var globalName = v.substring(2,v.length);
                                var currentId = row[colConfig.q];
                                var t = getTextFromGlobalById(globalName,currentId);
                                kwargs[k] = t
                            }

                            else if (v[0] == "@"){
                                kwargs[k] = row[v.substring(1,v.length)]
                            }else{
                                kwargs[k] = v
                            }
                        })


                        var temp = colConfig.text.content.format(kwargs)


                        var td = document.createElement('td')
                        /** q保存数据库的字段等同于数据库查出的k **/
                        //null 在这修改
                         td.innerHTML = temp
                        //设置属性
                        $.each(colConfig.attrs,function (kk,vv) {
                               td.setAttribute(kk,vv)

                        })
                        $(tr).append(td)
                    }
                })


               $('#table_td').append(tr)

       })
    }


上一篇 下一篇

猜你喜欢

热点阅读