入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

vue+element中的el-tree的自定义节点内容相关配置

创建时间:2017-11-09 投稿人: 浏览次数:2129

首先需要下载依赖包,此处主要讲需要使用的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>


声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。
  • 上一篇:没有了
  • 下一篇:没有了
未上传头像