layui版本 2.5.5
layui tree 动态赋值勾选的时候发现 勾选父级 所有子级默认都是勾选状态 与需求不合
解决:
修改如下:
断点执行 发现勾选节点的操作是在tree.js内处理的
在tree.js 92行处加入一个参数: checkChild: true 用于动态控制 不影响原有功能
//默认配置
Class.prototype.config = {
data: [] //数据
,showCheckbox: false //是否显示复选框
,showLine: true //是否开启连接线
,accordion: false //是否开启手风琴模式
,onlyIconControl: false //是否仅允许节点左侧图标控制展开收缩
,isJump: false //是否允许点击节点时弹出新窗口跳转
,edit: false //是否开启节点的操作图标
,checkChild: true //选中父级时 是否选选择所有子级
,text: {
defaultNodeName: '未命名' //节点默认名称
,none: '无数据' //数据为空时的文本提示
}
};
337行 原代码
//同步子节点选中状态
if(typeof item.children === 'object' || elem.find('.'+ELEM_PACK)[0]){
var childs = elem.find('.'+ ELEM_PACK).find('input[same="layuiTreeCheck"]');
childs.each(function(){
if(this.disabled) return; //不可点击则跳过
this.checked = checked;
});
};
修改后:
if(typeof item.children === 'object' || elem.find('.'+ELEM_PACK)[0]) {
//同步子节点选中状态
if(options.checkChild){
var childs = elem.find('.'+ ELEM_PACK).find('input[same="layuiTreeCheck"]');
childs.each(function(){
if(this.disabled) return; //不可点击则跳过
this.checked = checked;
});
}else{
if(!checked){
var childs = elem.find('.'+ ELEM_PACK).find('input[same="layuiTreeCheck"]');
childs.each(function(){
if(this.disabled) return; //不可点击则跳过
this.checked = checked;
});
}
}
}
使用方法:
tree.render({
elem: '#testTree'
, checkChild: false
, data: data
在引入模块时传入上方的自定义参数 checkChild : false
不传此参数 为原有实现 传入后勾选父节点 子节点不会选中
如果本地下载的layui js代码可能是压缩后的编码,需要从git上下载源码然后修改
参考文章: https://blog.csdn.net/nndjay/article/details/107857191