一:右键菜单:
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,不要用字符串。