知识整理(2019/11/11——2019/11/16)

post接口数据传递类型

一般都是通过form组件(例如input)的name属性获取组件的value属性值传给后台,但是会根据数据的类型(例如:字符串、数组、对象等)在接口处有不同的写法。
1、List areas
这是传递对象,可直接将var data = $(‘form’).serializeJson();的data进行传递,因为data就是一个对象。
$.post("@Url.Action(“XXXX”, “xxxx”)", data, function (result) {})
2、string goal
这是传递字符串,可能在data中的goal本身就是字符串,那就直接写data.goal即可,如果不是,则需要JSON.stringify(data.goal)进行转换。
(注:如果data.goal本身是字符串,再由JSON.stringify(data.goal)进行传递,则会出现斜杠,例如:"“我是值”")

setTimeout

不能将需要访问dom元素的js放在body之前,因为此时还没有开始生成dom,所以在body之前的访问dom元素的js会出错,或者无效

<script>
			new Vue({
				el: "#app",
				data: {
					load: false
				},
				created: function() {
					var self = this;
					self.load = true;
                       //这个时候div为false的文本都出现了,因为渲染不成功
					console.log(document.getElementById("div").innerHTML)
				//这个报错,因为此时还未取到div的内容
					console.log(document.getElementById("div").innerHTML)
					//解决方法: 加window.onload
					// window.onload=function(){
					// 	console.log(document.getElementById("div").innerHTML)
					}
				},
			})
	</script>

        <body>
		<div id="app">
			<div v-if="load">
				<div id="div">这是一个div</div>
			</div>
			<div v-if="false" id="div1">111</div>
		</div>
	</body>



    <script>
	new Vue({
		el: "#app",
		data: {
			load: false
		},
		created: function() {
			var self = this;
			//异步
			// mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。
			//created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。
			 setTimeout(function() {
			 	self.load = true;
			 	//变成true立马执行上面的v-if,但是因为时间不够,所以下面报错 ,因此于他而言,load还是false    
			 	console.log(document.getElementById("div").innerHTML)
			 }, 100)
			 //获取innerhtml的时候,v-if还没有执行,所以可以获取
			console.log(document.getElementById("123").innerHTML)
		},
	})
</script> 

checkbox的单选和多选

        <form class="layui-form" action="" v-if="model==''">
            <div class="layui-form-item">
                <ul>
                    <li><input type="checkbox" name="area" value="本人追的星" id="qg" lay-skin="primary" lay-filter="filter" title="本人追的星" /></li>
                    <li><input type="checkbox" name="area" value="yyqx" id="dq_1" lay-filter="filter1" title="yyqx" lay-skin="primary" /></li>
                    <li><input type="checkbox" name="area" value="lyf" id="dq_2" lay-filter="filter1" title="lyf" lay-skin="primary" /></li>
                    <li><input type="checkbox" name="area" value="pyc" id="dq_3" lay-filter="filter1" title="pyc" lay-skin="primary" /></li>
                    <li><input type="checkbox" name="area" value="lhr" id="dq_4" lay-filter="filter1" title="lhr" lay-skin="primary" /></li>
                    <li><input type="checkbox" name="area" value="kl" id="dq_5" lay-filter="filter1" title="kl" lay-skin="primary" /></li>
                </ul>
            </div>
        </form>

     <script>
    var form = layui.form;
    form.render();
    new Vue({
        el: "#app",
        mounted: function () {
            var self = this;
            form.render();
            form.on('checkbox(filter)', function (data) {
                $(":checkbox:gt(0)").prop("checked", this.checked);
                form.render();
            });
            form.on('checkbox(filter1)', function (data) {
                if ($(data.elem.id).is(":checked") == false) {
                    $("#qg").prop("checked", false);
                }
                form.render();
                var dq = $('input[name="area"]:checked').length;
                var alldq = $(":checkbox:gt(0)").length;
                if (dq == alldq) {
                    $(":checkbox:eq(0)").prop("checked", true);
                }
                form.render();
            });
        },
    });
</script>

echarts


<div id="app" class="layui-anim layui-anim-up">
    <div id="main" style="border:3px solid #009688;height:500px;width:700px;min-width:500px;margin:20px auto"></div>
</div>

<script>
function charts(data) {
        var myChart = echarts.init(document.getElementById('main'));
        option = {
            width: '650px',
            height: '410px',
            title: {
                text: '这是主标题',
                right: '20%',
                top: 10,
                subtext: '这是副标题',
                subtextStyle: {
                    color: '#000',
                    align: 'center',
                    verticalAlign: 'top',
                },
                textAlign: 'center',
            },
            tooltip: {
                trigger: 'axis'
            },
            legend: {
                bottom: '0%',
                data: ['legend1', 'legend2']
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '3%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
            },
            yAxis: {
                type: 'value',
                name: '纵坐标',
                nameLocation: 'middle',
                nameGap: '20'
            },
            series: [
                {
                    name: 'legend1',
                    type: 'line',
                    //这是线
                    smooth: true,
                    data: [[1,2],[2,3],[3,4],[4,5]],
                },
                {
                    symbolSize: 20,
                    name: 'legend2',
                    data: [[7,8],[8,9],[9,10]],
                    //这是点
                    type: 'scatter'
                },
            ],
        };
        myChart.setOption(option);
</script>

table新增行或列

(注:layui的input的lay-verify="required"属性成功运行的条件:必须有form且class=“layui-form”;lay-submit的button必须在form里面)

<div id="app" class="layui-anim layui-anim-up">
        <form class="layui-form" action="">
            <table class="layui-table" v-if="flag">
                <thead>
                    <tr>
                        <th colspan="5" class="tr_gzxcb" style="font-weight: bold;">表头</th>
                    <tr>
                    <tr>
                        <th class="th_head"></th>
                        <th class="th_head">th1</th>
                        <th class="th_head">th2</th>
                        <th class="th_head">th3</th>
                        <th class="th_head">th4</th>
                    </tr>
                </thead>
                //整行增加 addZW
                <tbody v-for="index,k in list1">
                    <tr>
                        <td :rowspan="list2[k].length+1">
                            <form class="layui-form">
                                <div class="layui-form-item">
                                    <input type="checkbox" :value="k" lay-filter="filter1" lay-skin="primary" />
                                </div>
                            </form>
                        </td>
                        <td class="text-center" :rowspan="list2[k].length+1"> <input type="text"  lay-verify="required" v-model="list1[k]" name="posgrade"  class="layui-input " onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');this.value=this.value.replace('.','');"></td>
                        <td class="text-center"> <input type="text"  lay-verify="required" name="post1" class="layui-input "></td>
                        <td class="text-center" :rowspan="list2[k].length+1"> <input type="number" lay-verify="required" min="0" name="averagewage"  class="layui-input " onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');this.value=this.value.replace('.','');"></td>
                        <td class="text-center"> <input type="text" lay-verify="required"  name="existwage1"class="layui-input " onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');this.value=this.value.replace('.','');"></td>
                    </tr>
                    //单行增加 addGW
                    <tr v-for="index,key in list2[k]">
                        <td class="text-center"> <input type="text" lay-verify="required"  name="post2"class="layui-input " onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');this.value=this.value.replace('.','');"></td>
                        <td class="text-center"> <input type="text" lay-verify="required"  name="existwage2" class="layui-input " onKeyUp="this.value=this.value.replace(/[^\.\d]/g,'');this.value=this.value.replace('.','');"></td>
                    </tr>
                </tbody>
            </table>
        </form>
        <div class="dj">
            <span class="adddj" v-on:click="addZW()">+整行增加</span> &nbsp;&nbsp;
            <span class="adddj" v-on:click="addGW()">+部分行增加</span>&nbsp;&nbsp;
            <span class="deletedj" v-on:click="del()"> -删除</span>
        </div>
    </div>

<script>
    var form = layui.form;
    form.render();
    new Vue({
        el: '#app',
        data: {
            list1:['','',''],
            list2: [],
            flag: false,
        },
        methods: {
            addZW() {
                this.list1.push('');
                this.list2.push('');
                $("input[type=checkbox]").prop("checked", false);
                form.render()
            },
            addGW() {
                var val = $("input[type='checkbox']:checked").val();
                var cbx = $("input[type='checkbox']:checked").length;
                if (val == undefined) {
                    layer.msg("请选择整行再添加部分行");
                } else if (cbx > 1) {
                    layer.msg('请逐一操作');
                } else {
                    this.list2.splice(val, 1, this.list2[val] + 1);
                    $("input[type=checkbox]").prop("checked", false);
                }
            },
            del() {
                var cbx = $("input[type='checkbox']:checked").length;
                if (this.list1.length < 4) {
                    layer.msg("不能再减少了");
                    $("input[type=checkbox]").prop("checked", false);
                    return false;
                } else if (cbx == 0) {
                    layer.msg("请选择删除选项");
                } else if (cbx > 1) {
                    layer.msg('请逐一删除');
                } else {
                    var val = $("input[type='checkbox']:checked").val();
                    this.list1.splice(val, 1);
                    //这个不能少,不然点击增加又点删除之后,list2长度没有减少,会出现undefined
                    this.list2.splice(val, 1);
                    $("input[type=checkbox]").prop("checked", false);
                }
            },
            GetList: function () {
                var self = this;
                $.post("@Url.Action("DJGet", "SM")", function (result) {
                    //重点!!!定义一个数组,将其长度和整行的长度相等
                    for (var i = 0; i < self.list1.length; i++) {
                        self.list2.push('');
                        self.flag = true;
                    }
                });
             }
        },
        mounted: function () {
            var self = this;
            form.render();
            form.on('submit(sub)', function (data) {
                var data = $('form').serializeJson();
                var post1 = data.post1;
                var post2 = data.post2; 
                var existwage1 = data.existwage1;
                var existwage2 = data.existwage2;
                var obj = {};
                obj.posgrade = data.posgrade;
                obj.averagewage = data.averagewage;
                var post = [];
                var existwage = [];
                var a = 0;
                //将所填的数据变成二维数组
                for (var i = 0; i < self.list2.length; i++) {
                    var temp = [];
                    var temp1 = [];
                    if (self.list2[i] == '') {
                        temp.push(post1[i]);
                        temp1.push(existwage1[i]);
                    } else {
                        temp.push(post1[i]);
                        temp1.push(existwage1[i]);
                        for (var j = 0; j < self.list2[i].length; j++) {
                            temp.push(post2[a]);
                            temp1.push(existwage2[a]);
                            a++;
                        }
                    }
                    post.push(temp);
                    existwage.push(temp1);
                }
                obj.post = post;
                obj.existwage = existwage;
            });
        },
    });
</script>

模板引擎

当表格经过双重循环但需要rowspan,会出现阶梯状表格,这个时候就可以用模板引擎

<div id="app" >
        <form class="layui-form" action="" >
            <table class="layui-table">
                <tbody id="view"></tbody>
            </table>
        </form>
</div>

<script id="demo" type="text/html">
    {{#  layui.each(d.qqq, function(index, item){ }}
    <tr>
    //模板引擎的rowspan需要{{}}
        <td rowspan="{{d.aaa[index].length+1}}">{{index+1}}</td>
    </tr>
    {{#  layui.each(d.aaa[index], function(i, items){ }}
    <tr>
        <td>{{items}}</td>
        <td>{{d.bbbb[index][i]}}</td>
    </tr>
    {{#  }); }}
    {{#  }); }}

var form = layui.form;
    //不能少
    var laytpl = layui.laytpl;
    new Vue({
        el: '#app',
        data: {
            aaa: null,
            qqq: null,
            bbbb: null,
        },
        methods: {
            GetList: function () {
                    setTimeout(function () {
                            var obj = {};
                            obj.aaa= self.aaaa;
                            obj.bbb= self.bbb;
                            obj.qqq= self.qqq;
                            var getTpl = document.getElementById('demo').innerHTML
                                , view = document.getElementById('view');
                            laytpl(getTpl).render(obj, function (html) {
                                view.innerHTML = html
                            });
        },
    });
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值