layui树形组件(右键、父节点选中子节点全被选中)

一:右键菜单:

layui里面没有给到右键菜单,所以,我自己把源码改了一下:

找到layui文件夹里modules下的tree.js

用以上代码,替换以下代码

当i.which等于3,是右键事件,等于1是左键。

所以,左键响应的事件,还是可以在tree的属性设置的时候的click属性里写自己的左键事件,如

tree.render({

  elem: '#test1'

  ,click: function(obj){

    console.log(obj.data); //得到当前点击的节点数据

    console.log(obj.state); //得到当前节点的展开状态:open、close、normal

    console.log(obj.elem); //得到当前节点元素

    console.log(obj.data.children); //当前节点下是否有子节点

  }

});

右键就在上面选中代码里if分支,i.swich=3的地方搞事情,菜单的话,就是自己写个菜单,然后根据鼠标点击位置显示和隐藏就好了。

二、父节点选中子节点全被选中

一个树形组件,比如到权限管理的时候,回显的时候,父节点被设置为选中,所有改节点的子节点都被设置为选中,但我们需要的可能是这样的回显:


1、所以,要么,只获取所有已经拥有的权限的最末端的id,然后用

tree.setChecked('demoId', 1); //单个勾选 id 为 1 的节点

tree.setChecked('demoId', [2, 3]); //批量勾选 id 为 2、3 的节点

去设置,这样,当子节点被一个选中,改节点的父节点也会被设置为选中,就可以得到需要的样子。

2、不然,就要把数据按照需要的样子做好,再重载实例

tree.reload('demoId', {

  //新的参数

data:newdata;

});

数据怎么做呢?就是把你需要选中的所有最末端的权限的Checked值赋true,记得用boolean,不要用字符串。

你可能感兴趣的:(layui树形组件(右键、父节点选中子节点全被选中))