### 问题描述
早期element版本没有treetable vueadmin中有一种treetable的实现方法,
其中有说可以传递自定义解析数据的方法,但是我通过prop传递方法一直报错
### 问题出现的环境背景及自己尝试过哪些方法
我试过在父组件同级写js文件然后引入,不行,也试过直接在父组件里
的method里写这个方法传,也不行。只有直接在该component同级写另一个js文件,
覆盖之前默认引用的方法,这样就可以但这样就不是传参了,直接破坏了该组件的
复用性,传方法的时候直接传个简单console之类的没问题,但是该数据解析方法
是递归方法,我不知道是不是有什么需要注意的地方
### 相关代码
粘贴代码文本(请勿用截图)
'use strict'
import Vue from 'vue'
export default function treeToArray(data, expandAll, parent = null, level = null) {
let tmp = []
Array.from(data).forEach(function (record) {
if (record._expanded === undefined) {
Vue.set(record, '_expanded', expandAll)
}
let _level = 1
if (level !== undefined && level !== null) {
_level = level + 1
}
Vue.set(record, '_level', _level)
// 如果有父元素
if (parent) {
Vue.set(record, 'parent', parent)
}
tmp.push(record)
if (record.children && record.children.length > 0) {
const children = treeToArray(record.children, expandAll, record, _level)
tmp = tmp.concat(children)
}
})
return tmp
}
此为默认数据解析的递归方法,
const func = this.evalFunc || treeToArray
const args = this.evalArgs ? Array.concat([tmp, this.expandAll], this.evalArgs) : [tmp, this.expandAll]
evalFunc为prop中传递的参数,当父组件传来自定义方法时就会替换原来默认的方法。
### 你期待的结果是什么?实际看到的错误信息又是什么?
我感觉核心的问题应该出在递归上,传到子组件方法执行一遍之后递归无效了,但
这只是我个人的猜测,望大佬解惑
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…