layui transfer 遇到的相关问题

动态显示穿梭框内容 并加了一个新的div进行存储添加的内容

效果
在这里插入图片描述
在这里插入图片描述
问题
1.transfer无法渲染的问题 已解决
transfer初始化 1.忘记引入css文件 2.后台数据必须要有 valuetitle这两个参数 ,否则解析的数据条数一致但是只会显示undefined ,建议传值的时候,将 id改成value,将需要显示的值拼接并改成title
2.动态添加标签,事件不触发,函数报错,无法找到已定义的函数 已解决
通过父标签动态给字标签绑定事件
3. 存储已选的div从下往上删除时第三个开始会出现多个删除现象 ,从上往下删则不会。(未解决)


**引入jS css**
<!-- 为了不影响原来的样式,新样式是直接引入layui2.5 放在layui下面的-->
 <link th:href="@{/layui/layui/css/layui.css}" rel="stylesheet"/>
 <script th:src="@{/layui/layui/layui.js}"></script>
  <h2 align="center " style="margin: 30px">样品选择</h2>
        <div class="layui-row">
            <div class="layui-inline layui-form" style="width:15%; margin-left: 127px;margin-top: 10px">
                <select name="patternCateId" id="patternCateId" lay-filter="patternCate">
                    <option value="">请选择主题</option>
                    <option th:each="patternCate,patternStat:${patternCates}"
                            th:value="${patternCate.id}"
                            th:text="${patternCate.patternCateName}"
                            th:selected="${patternCateId == patternCate.id}"
                    ></option>
                </select>
            </div>
        </div>
        <div class="layui-row">
            <div id="test1" class="demo-transfer" style="position:absolute;margin-left: 127px;margin-top: 10px"></div>
            <div class="layui-transfer-active" style="margin: 178px 613px;position: absolute" >
                <button type="button" id="add" class="layui-btn  layui-btn-primary "
                        data-index="0" style="border-color: #e61673;
              background-color: #e61673;">添加</button>
            </div>
            <div style="width: 400px; height: 360px; border: 1px solid #EEEEEE;position:absolute;margin-left: 680px;margin-top: 10px">
                <div class="layui-transfer-header  ">
                    <span>已有样品</span>
                </div>
                <div id="dataList" style="overflow: scroll; height: 320px" >
                </div>
            </div>
        </div>

<script>
 layui.use([ 'layer', 'form', 'upload','transfer'], function () {
        let layer = layui.layer,
            form = layui.form,
            transfer = layui.transfer,
            $ = layui.$;


//transfer渲染
        $.ajax({
            type: "post",
            contentType: "application/json;charset=UTF-8",
            async: false,
            // dataType:JSON,
            cache: false,
            url: "/share/list4Trans",
            data: {
                // patternCateId:1
            },
            success: function (res) {
                transfer.render({
                    elem: '#test1'  //绑定元素
                    , title: ['待选样品', '候选样品']
                    , parsedData: function (res) {
                        return {
                            "value": res.value,//数据值 必须  
                            "title": res.title //数据标题  必须
                        }
                    },
                    data: res
                    , id: 'demo1' //定义索引
                });
            }
        });
});


    //后端传入数据
    let dataList = [[${dataList}]];
 /*穿梭框修改以及数据获取*/
 将后台传来的数据显示在存储的div中
        show();
        let i=0;
        function show(){
            let con = '';
            $("#dataList").html("");
            for (let value of dataList) {
                let id = value.value;
                //为条数据添加删除按钮 ,并为按钮添加事件,动态添加事件无法直接添加,会无法识别函数,只能通过js绑定
                con = con + "<li  style='padding: 0 10px;height: 32px'>" + value.title + "&nbsp;&nbsp;&nbsp;&nbsp;" +
                    "<input type='button' text='" + id + "' id='pattern_" + id + "'    style='color: #FFFFFF;line-height: 17px;" +
                    "height: 20px;'  class='layui-btn layui-btn-sm layui-btn-primary'value='删除' ></li>"
                $("#dataList").on("click", "#pattern_" + id, function () {
                    let id = $("#" + this.id).attr("text");
                    console.log(id)
                    // console.log(data)
                    for (let k of dataList) {
                        console.log(k.value);
                        if (k.value == id) {
                            if (i > 0) {
                                i = 0;
                                return;
                            }else {
                                i = i+1;
                                dataList.splice(k, 1);
                                console.log(id,"::"+i);
                                show();
                            }
                        }
                    }

                });
            }
            $("#dataList").append(con);
        }


//将transfer选中的数据存入div中
  $("#add").click(function () {
            add();
        });
        function add(){
            //获取穿梭框已选中的数据  getData 填的id为初次渲染时定义的索引,不是div id 
            let data=transfer.getData("demo1");
            console.log(1);
            let  i=0;
            for (let k of data) {
                let flag = true;
                for (let h of dataList) {
                    if (h.value === k.value) {
                        flag = false;
                    }
                }
                if (flag) {
                    dataList.push(k);
                    i= i+1;
                }
            }
            if (i>0){
                show();
            }
        }

//每次更换主题,重新渲染transfer,该操作为异步
      form.on('select(patternCate)', function () {
            let patternTitle = $('#patternTitle').val();//获取输入框的值
            let patternCateId = $('#patternCateId').val();//获取输入框的值
            $.ajax({
                type: "post",
                // contentType: "application/json;charset=UTF-8",
                async: false,
                // dataType:JSON,
                cache: false,
                url: "/share/list4Trans",
                data: {
                    patternCateId: patternCateId
                },
                success: function (res) {
                    transfer.render({
                        elem: '#test1'  //绑定元素
                        , title: ['待选样品', '候选样品']
                        , parsedData: function (res) {
                            return {
                                "value": res.value,//数据值
                                "title": res.title //数据标题
                            }
                        },
                        data: res
                        , id: 'demo1' //定义索引
                    });
                }
            });
        });
</script>
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值