layui 勾选不联动父项 树形控件_layui树形组件重现勾选过程的办法

layui提供了两种初始化节点选中状态的方式

一 tree.setChecked('demoId', [2,13,18,19]); //批量勾选 id 为2,13,18,19 的节点

其中19是用户真实勾选的节点ID,但是组件提交的勾选节点包含全路径.

如果顶级权限被勾选了,那么layui设置节点勾选的时候就会勾选其全部的权限也就是默认就勾选了所有权限。

layui树形组件此时无法重现用户的节点勾选情况了,怎么办?

这个时候就不能从前台的角度来解决问题了,因为layui树形组件的规则就是这样的。

二 通过数据源设置初始选中状态

那这代表我们可以把,2,13,18,19这四个节点的checked属性设置为true吗?不行,如果顶级权限的checked为true,这表示所有权限都处于初始选中状态。

现在我们重新回顾一下树形组件的使用过程:

我们要给某个角色加上角色列表的操作权限,组件于是选中了角色列表和及祖先节点.

当然我们勾选后台角色,那么其子节点角色列表也会被勾选.

如果目标子节点无兄弟节点,这两种选中方式组件勾选的数据相同.

通过勾选父节点选中后代节点的方式可以提高勾选效率,仅此而已。

整个属性组件的使用过程中,我们需要关心的永远只有叶子节点,这是节点初始化选中状态的核心逻辑,也就是说我们把用户真实勾选的,叶子节点,19设置成勾选状态就可以了。

方式一,设置数据源中勾选的叶子节点checked属性为true,

foreach ($res as $key => $value){

//是否有子节点

$count = AdminPrivileges::where([['pid','=',$value['id']],['status','=','1001']])->count();

if(in_array($value['id'],$privileges)&&$count==0){

$res[$key]['checked'] = true;

}else{

$res[$key]['checked'] = false;

}

unset($res[$key]['level']);

if($count!=0){

$temp = $this->get_lower_i($where,$value['id'],$privileges);

$res[$key]['children'] = $temp;

}

}

方式二,通过tree.setChecked,第二个参数为勾选的叶子节点。

tree.setChecked('demoId', [19]);

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值