Layui中将laydate的值动态赋值到upload作为上传接口请求地址的方法

104次阅读

共计 1803 个字符,预计需要花费 5 分钟才能阅读完成。


一、错误方向

起初,我按照 jquery 的方法,定义了 year 和 month,值是对应 dom 元素的 val,奇怪的是,我在 laydate 中改变这两个值,并没有传递出来,故而一开始我的方向是怎么将 laydate 的值传出。

1
2
var year = $(“#data_year”).val();
var month = $(“#data_month”).val();

尝试搜索后,能通过好几种方式更新这个值,这些方法包括:

1
2
$(“#data_year”).change();
year = $(“#data_year”).val();

1
year(value);

前提是必须用 laydate 提供的 done 来操作,如下:

1
2
3
4
done: function (value, date, endDate) {
                    $(“#data_year”).change();
                    year = $(“#data_year”).val();
                }

通过 console,确实能打印出新的值:

1
console.log(year, month);

二、upload 任然没有更新

我需要获取 laydate 的值,组合作为 URL,传递给后端作为输入判断,所以 URL 中需要 laydate 选中的这个新值。

1
2
3
4
upload.render({
      url: “/index/tools/dataInputApi” + ‘/year/’ + year + ‘/month/’ + month,
      ......
});

尝试通过 form 表单来更新所有元素:

1
form.render();

任然不行。

三、需要更新的是 upload

layui 2.5.0 开始,新增了重载 upload 的方法,也就是之前的思路都错了,render 后,URL 的值已经写死,外部更新,对 upload 是一点影响没有。

所以,我们需要在 laydate 中,这样操作:

1
2
3
4
5
6
7
8
done: function (value, date, endDate) {
                    $(“#data_month”).change();
                    month = $(“#data_month”).val();
                    console.log(year, month);
                    uploadInst.reload({
                        url: “/index/tools/dataInputApi” + ‘/year/’ + year + ‘/month/’ + month,
                    });
                }

重载实例之前,可别忘了创建一个实例,也就是对应的 upload 实例化:

1
2
3
var uploadInst = upload.render({
......
});

 

正文完
 0