iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > VUE >layui中如何使用table插件进行复选框联动功能
  • 466
分享到

layui中如何使用table插件进行复选框联动功能

2024-04-02 19:04:59 466人浏览 薄情痞子
摘要

小编给大家分享一下layui中如何使用table插件进行复选框联动功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实际项目功能

小编给大家分享一下layui中如何使用table插件进行复选框联动功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

实际项目功能:

给员工账号进行分配权限(增加权限,修改权限)

实现思路:

用表格展示权限列表–>勾选分配该账号的权限–>调用接口

出现的问题:

因为某些权限之间是有关联的,比如: “ 查看材料 ” 和 “ 修改材料 ” ,这两个权限是有联系的,当你勾选 “ 修改材料 ” 权限的时候,那么, “ 查看材料 ” 权限也要勾选上,当你取消勾选 “ 查看材料 ”权限的时候,“ 修改材料 ” 权限也要取消。

所以当用户勾选某个权限的时候,我们要通过js代码去判断是否有和这个权限相关的权限,如果有,就需要通过js代码自动勾选或取消勾选。

而layui的table插件没有提供通过js代码自动勾选或取消勾选复选框的方法;

解决方案:

通过table的reload方法和fORM的render方法实现

思路:

//以查看材料和修改材料权限为例:查看材料的id为2,修改材料的id为3
//用户点击复选框时,触发的回调函数
table.on('checkbox(quanXianAll)', function(obj) {
 //判断是否是全选
 if (obj.type === "one") {
   //判断判断选中的权限是否为“修改材料”
   if (obj.data.id === 3) {
    //判断是否选中状态
    if (obj.checked) {
     tableIns.reload({
      data:data,
      done: function (res) {
       //根据“查看材料”权限的id获取的索引
       var n = res.data.findIndex(function (item, i) {
        if (item.id === 2) {
         return true
        }
       })
       //判断查看材料”权限是否已被勾选
       if(!res.data[n].LAY_CHECKED){
        res.data[n].LAY_CHECKED = true;
        $(".layui-table-body").find("tr[data-index=" + n + "]").find('input[name="layTableCheckbox"]').prop("checked", true);
        form.render('checkbox');
       }

      }
     })
    }
   }
  }
})

这种关联肯定不止一个,所以我们要把代码进行封装。(思路应该说明白了,代码就不再进行这里封装了)

在table的源文件中添加一个这样的方法

在table源码中的a.elem.on("click", 'input[name="layTableCheckbox"]+', function () {}方法内,添加以下方法

var mylaysetCheck= function (index,checked,callbacks) {
 var e=t("table[lay-filter="+f+"]").next().find(".layui-table-box").find(".layui-table-main").find("tr[data-index="+index+"]"),
  l = e.parents("tr").eq(0).data("index"), n = e[0].checked,
  o = "layTableAllChoose" === e.attr("lay-filter");

 e.find('input[name="layTableCheckbox"]').prop("checked",checked);
 if(callbacks){
  this.setCheckData(index, checked), this.syncCheckAll();a.renderForm("checkbox");
  layui.event.call(this, s, "checkbox(" + f + ")", {
   checked: n,
   data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
   type: o ? "all" : "one",
   mysetCheck:mylaysetCheck.bind(a)
  })
 }else {
  this.setCheckData(index, checked), this.syncCheckAll();a.renderForm("checkbox");

 }
};

在table源码中

a.elem.on("click", 'input[name="layTableCheckbox"]+', function () {}方法内有一个layui.event.call()函数===> 源码为:

layui.event.call(this, s, "checkbox(" + f + ")", {
 checked: n,
 data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
 type: o ? "all" : "one"
})

改为:

layui.event.call(this, s, "checkbox(" + f + ")", {
 checked: n,
 data: d.cache[a.key] ? d.cache[a.key][l] || {} : {},
 type: o ? "all" : "one",
 mysetCheck:mylaysetCheck.bind(a)
})

通过以下代码调用

//用户点击复选框时,触发的回调函数
table.on('checkbox(test)', function(obj){
 //两个参数,第一个是数组的索引,第二个是是否勾选,第三个是否使用回调函数
 obj.mysetCheck(index,checked,callbacks);
});

//案例:查看材料的id为2,索引为2;修改材料的id为3,索引为3
table.on('checkbox(quanXianAll)', function(obj){
 if(obj.data.id===3&&obj.checked){
  obj.mysetCheck(2,true,true);
 }
 if(obj.data.id===2&&!obj.checked){
  obj.mysetCheck(3,false,true);
 }

});
//这样就可以实现:勾选“修改材料”时也会把“查看材料”勾选上,取消勾选“查看材料”时也会取消“修改材料”的勾选

对比:

第一种方法不用修改源码,但代码量多,且不是局部刷新;

第二种方法是局部刷新,代码不多,但是修改源码,设计到版本迁移的问题,且业务逻辑错误,容易发生无限循环;

以上是“layui中如何使用table插件进行复选框联动功能”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网VUE频道!

--结束END--

本文标题: layui中如何使用table插件进行复选框联动功能

本文链接: https://www.lsjlt.com/news/69097.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • layui中如何使用table插件进行复选框联动功能
    小编给大家分享一下layui中如何使用table插件进行复选框联动功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!实际项目功能...
    99+
    2024-04-02
  • BootStrap中如何实现Table复选框默认选中功能
    这篇文章主要介绍BootStrap中如何实现Table复选框默认选中功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!废话不多说,直接给大家贴代码了,具...
    99+
    2024-04-02
  • thinkphp关联查询如何使用条件进行筛选
    这篇“thinkphp关联查询如何使用条件进行筛选”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“thinkphp关联查询如何...
    99+
    2023-07-05
  • 如何使用Angularjs+bootstrap+table多选支持单击行选中实现编辑、删除功能
    小编给大家分享一下如何使用Angularjs+bootstrap+table多选支持单击行选中实现编辑、删除功能,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获...
    99+
    2024-04-02
  • Win8如何开启文件夹复选框功能默认是禁用的
      Win8系统中,默认文件夹复选框功能是禁用的。因此喜欢复选框功能的朋友就要自己开启这项功能了,不过很多刚接触WIn8的朋友并不知道从哪儿开启,下面就详细为大家介绍Win8开启复选框功能的方法,一起来看看吧。   1、...
    99+
    2023-06-07
    Win8 复选框 功能 选框 文件
  • Laravel 框架中如何使用 ASP 文件进行开发?
    Laravel 是一个流行的 PHP 开发框架,它提供了许多便利的功能和工具,让开发者可以快速地创建 Web 应用程序。在 Laravel 中,开发人员可以使用多种文件类型来完成应用程序的开发,其中包括 ASP 文件。本文将介绍 Larav...
    99+
    2023-09-01
    文件 laravel 框架
  • vue中如何使用codemirror插件实现代码编辑器功能
    这篇文章主要介绍“vue中如何使用codemirror插件实现代码编辑器功能”,在日常操作中,相信很多人在vue中如何使用codemirror插件实现代码编辑器功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答...
    99+
    2023-06-20
  • 如何使用Ajax进行文件与其他参数的上传功能
    这篇文章主要为大家展示了“如何使用Ajax进行文件与其他参数的上传功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用Ajax进行文件与其他参数的上传功能...
    99+
    2024-04-02
  • C#中如何使用单元测试框架进行自动化测试
    C#中如何使用单元测试框架进行自动化测试引言:在软件开发过程中,自动化测试是一个非常重要的环节。通过编写和运行测试代码,可以帮助我们验证和确保代码的正确性和稳定性。在C#开发中,我们可以使用单元测试框架来实现自动化测试。本文将介绍C#中常用...
    99+
    2023-10-22
    自动化测试 C# 单元测试
  • 你知道如何在Python中使用响应文件框架进行文件上传和下载吗?
    当涉及到文件上传和下载时,Python中的响应文件框架是一个非常强大的工具。Python中的响应文件框架可以帮助我们轻松地上传和下载文件,而且它还可以处理大文件和进度条等功能。在这篇文章中,我们将深入探讨如何在Python中使用响应文件框架...
    99+
    2023-07-20
    响应 文件 框架
  • 在Java项目中使用字节流如何实现一个文件复制功能
    这篇文章将为大家详细讲解有关在Java项目中使用字节流如何实现一个文件复制功能,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。具体内容如下import java.io.FileInputStr...
    99+
    2023-05-31
    java 字节流 文件复制
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作