Closed ALuShu closed 3 years ago
场景:编辑目录树,目录树会带一些自定义的属性,后台传来难免有null的
进行拖拽、右键菜单等操作节点的操作时,会报Uncaught TypeError: Cannot convert undefined or null to object;并且操作的节点会消失:
定位发现似乎是操作节点时,这里的forEach无法兼容null的属性:
建议:不知是否可以加入兼容,只遍历操作节点所需的: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; }
@ALuShu 已修复
场景:编辑目录树,目录树会带一些自定义的属性,后台传来难免有null的
进行拖拽、右键菜单等操作节点的操作时,会报Uncaught TypeError: Cannot convert undefined or null to object;并且操作的节点会消失:
定位发现似乎是操作节点时,这里的forEach无法兼容null的属性:
建议:不知是否可以加入兼容,只遍历操作节点所需的:id,pid,label等必要属性,不遍历用户自定义属性,因为实际场景里目录树带自定义数据方便传输的场景还是挺多的。
我目前是用了一个function来遍历filter掉自己的null属性,属于强行舍弃一些数据的操作了: