Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.8k views
in Technique[技术] by (71.8m points)

VUE treeTable 自定义方法怎么传递

### 问题描述

   早期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中传递的参数,当父组件传来自定义方法时就会替换原来默认的方法。

### 你期待的结果是什么?实际看到的错误信息又是什么?

 我感觉核心的问题应该出在递归上,传到子组件方法执行一遍之后递归无效了,但
 这只是我个人的猜测,望大佬解惑

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...