hsiangleev / eleTree

Tree component based on virtual dom
https://eletree.hsianglee.cn/
MIT License
43 stars 26 forks source link

监听事件对data的key遍历不兼容null的属性 #25

Closed ALuShu closed 3 years ago

ALuShu commented 3 years ago

场景:编辑目录树,目录树会带一些自定义的属性,后台传来难免有null的 image

进行拖拽、右键菜单等操作节点的操作时,会报Uncaught TypeError: Cannot convert undefined or null to object;并且操作的节点会消失: image

定位发现似乎是操作节点时,这里的forEach无法兼容null的属性: image

建议:不知是否可以加入兼容,只遍历操作节点所需的:id,pid,label等必要属性,不遍历用户自定义属性,因为实际场景里目录树带自定义数据方便传输的场景还是挺多的。

我目前是用了一个function来遍历filter掉自己的null属性,属于强行舍弃一些数据的操作了:

/**
    * 过滤掉null的属性
    * @param obj
    */
function nullFilter(obj){
    if (obj['children'] !== undefined || obj['children'] !== null || obj['children'].length > 0) {
        obj['children'].forEach(e => nullFilter(e));
    }
    Object.keys(obj).forEach(item=>{
        if(obj[item] === null)  delete obj[item]
        if(item === 'data' && obj[item] != null) {
            Object.keys(obj[item]).forEach(e=>{
                if(obj[item][e] === null)  delete obj[item][e]
            })
        }
    });
    return obj;
}
hsiangleev commented 3 years ago

@ALuShu 已修复