vue+element中的el-tree的自定义节点内容相关配置
首先需要下载依赖包,此处主要讲需要使用的jsx部分,需要下载:
npm install babel-plugin-syntax-jsx babel-plugin-transform-vue-jsx babel-helper-vue-jsx-merge-props babel-preset-env --save-dev
下载babel-plugin-transform-vue-jsx需要加上版本如:npm install babel-plugin-transform-vue-jsx@3 --save-dev
参考https://github.com/vuejs/babel-plugin-transform-vue-jsx
然后需要配置.babelrc(此处配置很重要), 如下:
{
"presets": [
["env", {
"modules": false,
"targets": {
"browsers": ["> 1%", "last 2 versions", "not ie <= 8"]
}
}],
"stage-2"
],
"plugins": ["transform-runtime","transform-vue-jsx"],
"env": {
"test": {
"presets": ["env", "stage-2"],
"plugins": ["transform-vue-jsx","istanbul"]
}
}
}
然后在页面中使用就可以了,
<style>
.span{
flex: 1; display: flex; align-items: center; justify-content: space-between; font-size: 14px; padding-right: 8px;
}
</style>
<template>
<div>
<el-tree
:data="data4"
:props="defaultProps"
show-checkbox
node-key="id"
default-expand-all
:expand-on-click-node="false"
:render-content="renderContent">
</el-tree>
</div>
</template>
<script>
let id = 1000
export default {
data () {
return {
data4: [{
id: 1,
label: "一级 1",
children: [{
id: 4,
label: "二级 1-1",
children: [{
id: 9,
label: "三级 1-1-1"
}, {
id: 10,
label: "三级 1-1-2"
}]
}]
}, {
id: 2,
label: "一级 2",
children: [{
id: 5,
label: "二级 2-1"
}, {
id: 6,
label: "二级 2-2"
}]
}, {
id: 3,
label: "一级 3",
children: [{
id: 7,
label: "二级 3-1"
}, {
id: 8,
label: "二级 3-2"
}]
}],
defaultProps: {
children: "children",
label: "label"
}
}
},
methods: {
append (data) {
const newChild = { id: id++, label: "testtest", children: [] }
if (!data.children) {
this.$set(data, "children", [])
}
data.children.push(newChild)
},
remove (node, data) {
const parent = node.parent
const children = parent.data.children || parent.data
const index = children.findIndex(d => d.id === data.id)
children.splice(index, 1)
},
renderContent (h, { node, data, store }) {
return (
<span class="span">
<span>
<span class="ll">{node.label}</span>
</span>
<span>
<el-button style="font-size: 12px;" type="text" on-click={ () => this.append(data) }>Append</el-button>
<el-button style="font-size: 12px;" type="text" on-click={ () => this.remove(node, data) }>Delete</el-button>
</span>
</span>
)
}
}
}
</script>
- 上一篇:没有了
- 下一篇:没有了