组织架构树是项目中特别常见的一类组件,我一般都用ztree,前两天又用到这个,不过需求跟平时有点区别,我感觉也算比较常见,就把他稍微整理一下。
需求大致是这样:一个普通的树结构,点击编辑。
会弹出来操作按钮,而且并不是所有用户都有增删改的权限,对该节点不具备的权限会置灰,如下图所示。
我们知道ztree是带编辑功能的,但是长这样子
而且ztree的官方demo的编辑按钮是在鼠标hover到节点以后才弹出来的,显然跟我们的需求不符合。我看了下代码,发现删除和编辑用的是这两个API1
2editName(node)
removeNode (node, callbackFlag)
鼠标的hover其实不是伪类:hover,而是调用了 addHoverDom 和 removeHoverDom这两个API,目的是拿到要操作的节点。再看我们的需求,发现我们需要所有的节点(ztree对象的getNodes()方法可以拿到所有节点),因为我们需要让每个节点的操作按钮都显示出来。
基本思路:遍历所有节点,然后操作该节点对应的dom,拼接操作按钮图标(这里需要判断是否有权限,根据权限拼接不同的图标),再给按钮绑定事件,调用对应操作的API;
代码如下,因为还有地方要调用,所以我将其封装成了方法1
2
3