本来想用自定义指令
实现一个权限控制:有权限时显示,无权限时隐藏。
但在el-table-column
组件上使用自定义指令无法隐藏列,使用v-if
却可以:
DEMO: https://jsfiddle.net/779102260/cnf8dgr2/
猜测原因:
v-if
是不产生DOM,
自定义指令只能先产生DOM之后再去操作DOM。
el-table-column
组件在产生DOM时已经根据组件生成了另一个列,原来的根本不使用,所以再怎么操作也没用
不知道是不是这个原因?
大佬们有没有其他方法?
首先给个结论,那就是你的属性是设置成功了的,但是你设置属性的节点,只是vue中的一个临时节点,在真正的节点生成之后,被替换掉了
这个是简单元素在执行自定义指令时的el对象
这个是el-table-column在执行自定义指令时的el对象
可以看出,在执行自定义指令时该column所代表的dom节点还未完全生成,在结构中仅仅只有一个根div,这里需要说的是,element-ui的这个组件是使用createElement动态生成的,而自定义指令在dom尚未完全生成之前就已执行,当然无法进行操作了
附上渲染的源码: