• 动态放入后台给的键值对显示出来,然后动态返回数据(难点:数据格式问题)


    一、动态放入后台的值

    将'应发'下的键数据${key}放入html中,记得使用转义字符  ``  ,这个符号实在键盘左上角的第二列第一个,来表示里面写的是html格式的代码。

    然后 ${this.data.data['应发'][i][key]}是遍历每行的key对应的值,

    然后再把html给放入你的html文件中,用prepend()方法

     for (var i = 0; i < this.data.data['应发'].length; i++) {
                for (var key in  this.data.data['应发'][i]) {
                    var money_html = `<div class="row"><label for="#"> ${key}</label> :<input name='yf' type="text" class="form-control" value="${this.data.data['应发'][i][key]}"></div>`;
                    break;
                }
                $('#yf_money').prepend(money_html);
            }
            for (var i = 0; i < this.data.data['应扣'].length; i++) {
                for (var key in  this.data.data['应扣'][i]) {
                    var money_html = ` <div class="row"><label for="#"> ${key}</label> :<input name="yk" type="text" class="form-control" value="${this.data.data['应扣'][i][key]}"></div>`;
                    break;
                }
                $('#yk_money').prepend(money_html);
            }

    二、然后动态返回数据

        大概返回的数据就是对象下放两个列表(前端叫做对象){字典下几条列表(前端叫做数组)},然后再放两个字符串。

    下面是返回的大概格式。

    'data':{
        'yf':[{'一':1},{'二':2},{'三':3}],
            'yk':[{'四':4},{'二':5},{'三':6}],
            'yy':'yy',
            'mm':'mm'
    }

    我的想法是这样的,由于我是前端小白啊,能力范围下我只能获取到字典下的列表中的key列表和value列表。

    你也可以理解为获取对象中的数组中的key数组和value数组

    获取input的name为yf的所有数据,获取value数组,用到each.(function(){   });的方法。

     $("input[name='yf']").each(function(){
           yf_value.push($(this).val());
        });
        $("input[name='yk']").each(function(){
            yk_value.push($(this).val());
        });
     

    然后获取label下的key数组,这里遇到另一个问题,就是我获取的label值是整个HTML的label值,但我想要获取的key数组是从第4个开始算起的,而且长度每次也是有局限的,所以这里就利用到了上面的yf_value.length,来获取我需要的数据。

    $('label').each(function(){
            b.push($(this).text());
        });
        yf_key= b.slice(4,yf_value.length+4);
        yk_key= b.slice(yf_value.length+4,yf_value.length+4+yk_value.length);

    接下来,就是比较难受一点的将两个数组拼在一个对象里了,这里呢,一定要注意if条件里的

       ( i==j )

    这个如果写错的话,各种数据格式都会出现,一开始我以为是var的问题,改成let之后发现也并没有什么卵用。还有就是,刚开始写的时候,我是把数据push进yf和yk数组的

    yf.push(dict); 

    yk.push(dict1);

    其实好像和下面的写法也差不多,不过下面的会舒服一点

    yf[i]=dict;

    yk[i]=dict;

    var yf=[];
    var yk=[];
    console.log(yk_key);
    for (var i=0;i<yf_key.length;i++){ var dict={}; for(var j=0;j<yf_value.length;j++){ if(i==j){ dict[yf_key[i]]=yf_value[i]; yf[i]=dict; } } } for (var i=0;i<yk_key.length;i++){ var dict1={}; for(var j=0;j<yk_value.length;j++){ if(i==j){ dict1[yk_key[i]]=yk_value[i]; yk[i]=dict1; } } }

    总结:这里主要用的思想呢,大概有下面这几个

    1.获取多个input的值(用each()方法去遍历name),获取多个label的值(直接用each),有人可能会问,用id啊,但是重点是他这个input是动态生成的啊!!,用id只能获取一个值,这里你需要获取多个Input,所以id已经gg了

    2.还有就是label的获取,取第四个开始的数据,用到slice切片,

    3.怎样获取后端动态返回的数据放入html页面显示,用到${}的方法,然后再用prepend方法加入到对应html的id下

    4.然后就是将key列表和value列表组装成字典,用到两个for循环,然后判断i==j,再赋值即可。(将两个列表放入一个字典)。

    前端实习第20天,好像是吧,继续加油肝,程序猿没有下班,只有自愿加班。!!!

  • 相关阅读:
    没时间写文章::>_<::
    使 iis 支持 flv 视频播放
    CentOS7系统配置国内yum源(阿里云)
    android adb启动失败问题 adb server is out of date. killing... ADB server didn't ACK * failed to start daemon *
    android开发 获取手机分辨率大小
    c++流操作>rdbuf()
    ROR:Mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost'
    android map如何获得Google Map API key
    Android有效解决加载大图片时内存溢出的问题
    Android开发之Intent跳转到系统应用中的拨号界面、联系人界面、短信界面
  • 原文地址:https://www.cnblogs.com/qq946487854/p/10225105.html
Copyright © 2020-2023  润新知