js展示思路

一、

表头的生成

1. 通过ajax从后台获取数据

函数 介绍
init 函数 初始化,通过ajax获取后台数据参数
initHeader 生成table头
initBody 生成table内容
initGlobalData 为了处理跨表的数据,生成一个在js全局的数据,格式{"对应配置文件的@@":[[],[]]}
        function init() {
            $.ajax(
                {
                    url:'/asset-json.html/',
                    type:'GET',
                    dataType:'JSON',
                    success:function (resutlt) {
                        initGlobalData(resutlt.global_list)
                        initHeader(resutlt.table_config);
                        initBody(resutlt.table_config,resutlt.data_list);
                    }
                }
            )
        }

1. 编写table头函数initHeader()
resutlt.table_config 数据格式
后台配置文件的列表里面title封装了表头 [{ 'title':'ID'}]
可扩展加编号title
思路利用document.createElement生成tr,th标签,通过循环列数来生成table头
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').empty()
        $('#table_th').append(tr)
    }

表内容的生成

1. 编写table内容函数initBody()函数生成表格内容
参数 参数介绍 参数格式
resutlt.table_config 表格的列 格式详见配置列表
resutlt.data_list 表格的行 格式通过model.values查出来的类似字典的格式,k代表着字段,v代表字段值,循环个数就是列表的行
可扩展加编号title
思路利用document.createElement生成tr,th标签,通过循环列数来生成table头
表格的展示形式行*列双层循环
function initBody(table_config,data_list) {
         $('#table_td').empty();
       /** data_list 是数据库查回的数据,有多少条就有多少行 **/

            for(var i=0; i<data_list.length; i++){
                var row = data_list[i]
                var tr = document.createElement('tr')
                //给tr 设置属性,吧当前数据库中的id放到tr中
                tr.setAttribute('row-id',row['id'])

                /** table_config 是标题标题管的是多少列 **/
                $.each(table_config,function (k,colConfig) {
                    if(colConfig.display) {
                        //colConfig.text.content = "{m}-{n}"为格式化的字符串
                        //colConfig.text.kwargs = "{'n':"机柜",'m':"xx`"}"替换的格式内容
                       //自定义string方法
                        //封装了字符串的所有方法
                        var td = document.createElement('td')
                        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)
                        /** q保存数据库的字段等同于数据库查出的k **/
                        //null 在这修改
                         td.innerHTML = temp
                        //设置属性
                        $.each(colConfig.attrs,function (kk,vv) {
                            if(vv[0] == "@"){
                                //生成下拉框value
                                td.setAttribute(kk,row[vv.substring(1,vv.length)])

                            }else{
                                td.setAttribute(kk,vv)
                            }
                        })
                        $(tr).append(td);
                    }
                });


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

       }
    }
2.编写表内容中的js string自定义的方法
js重写参数 参数介绍
String.prototype自定义方法 函数中this参数等价于当前调用的字符串

下面的案例打印出来的是sss测试

String.prototype.text= function (kwargs) {
        return "sss"+this

    }
    alert("测试".text())
编写一个用来替换自定义差价格式的转换js,替换的格式{n}-{m},替换的内容在view定义好,这里使用了和字段同名的命名方式,为了保证可以替换数据查出来的信息
String.prototype.format=function (kwargs) {
        //用正则匹配要替换的内容
        var ret = this.replace(/\{(\w+)\}/g,function(km,m){
                //return 会替换完后返回替换后的值,m是正则匹配的占位符
               //return 通过字典里面的k替换掉,被替换的字符串
                return kwargs[m];
        });

        return ret;
    };
3.编写用来封装的跨表查询数据
globalName currentId
全局变量的名字也就是@@后面的字段 当前@@查出来的列表中第一位置的值
function getTextFromGlobalById(globalName,currentId){
            $.each(globalName,function (k,item) {
                if(item[0]==currentId){
                    ret = item[1]
                    return
                }
            });
            return ret
        }
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,907评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,987评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,298评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,586评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,633评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,488评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,275评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,176评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,619评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,819评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,932评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,655评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,265评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,871评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,994评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,095评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,884评论 2 354

推荐阅读更多精彩内容

  • 办公室进了两只苍蝇 在我耳边飞来飞去,我好烦 我打开门,拿着毛巾往外甩,企图把他们赶出去,但是他们好像很喜欢我这里...
    薄荷唐唐阅读 187评论 0 0
  • 【我想生命的存在绝不只是简单的活着,我想最大的遗憾是青春耗尽一事无成,我想每个高洁的人追求的是人生极高的境界用行动...
    田田__阅读 153评论 2 3
  • 夜来春风起 吹落了睡意 辗转不成梦 我又何处去寻你 正月春风寒 吹起了思念 君要多加衣 阳光的日子能相见 我听春风...
    金水吉阅读 192评论 0 0
  • 对于销售这个行业来说,很多人都认为这只是一种很艰难很辛苦的工作,往往比起那些文职类的工作要辛苦上百倍,这是真的吗?...
    简单做事阅读 11,767评论 1 1