<p>Element UI 提供了 Tree 组件来实现树形结构的展示和交互。本文将介绍 Tree 组件的使用方法,包括展示树形结构、展开和收起节点、选中节点、自定义节点内容等。同时,还会提供一些代码示例和常用属性和方法。</p>
<h2>1. 引入 Tree 组件</h2>
<p>在需要使用 Tree 组件的地方,引入 Tree 组件:</p>
<pre><code class="language-html"><template>
  <el-tree :data="data"></el-tree>
</template>
<script>
import { Tree } from 'element-ui';

export default {
  components: {
    'el-tree': Tree,
  },
  data() {
    return {
      data: [
        {
          label: '一级 1',
          children: [
            {
              label: '二级 1-1',
              children: [
                {
                  label: '三级 1-1-1'
                },
                {
                  label: '三级 1-1-2'
                }
              ]
            },
            {
              label: '二级 1-2',
              children: [
                {
                  label: '三级 1-2-1'
                },
                {
                  label: '三级 1-2-2'
                }
              ]
            }
          ]
        },
        {
          label: '一级 2',
          children: [
            {
              label: '二级 2-1',
              children: [
                {
                  label: '三级 2-1-1'
                },
                {
                  label: '三级 2-1-2'
                }
              ]
            },
            {
              label: '二级 2-2',
              children: [
                {
                  label: '三级 2-2-1'
                },
                {
                  label: '三级 2-2-2'
                }
              ]
            }
          ]
        }
      ]
    }
  }
}
</script></code></pre>
<h2>2. 展开和收起节点</h2>
<p>可以通过设置<code>default-expand-all</code>属性为true来默认展开所有节点,也可以通过设置节点的<code>expand</code>属性来控制展开和收起:</p>
<pre><code class="language-html"><el-tree :data="data" :default-expand-all="true"></el-tree></code></pre>
<pre><code class="language-html"><el-tree :data="data" @node-click="handleNodeClick"></el-tree>
<script>
export default {
  data() {
    return {
      data: [
        {
          label: '一级 1',
          expand: true,
          children: [
            {
              label: '二级 1-1',
              children: [
                {
                  label: '三级 1-1-1'
                },
                {
                  label: '三级 1-1-2'
                }
              ]
            },
            {
              label: '二级 1-2',
              children: [
                {
                  label: '三级 1-2-1'
                },
                {
                  label: '三级 1-2-2'
                }
              ]
            }
          ]
        },
        {
          label: '一级 2',
          children: [
            {
              label: '二级 2-1',
              children: [
                {
                  label: '三级 2-1-1'
                },
                {
                  label: '三级 2-1-2'
                }
              ]
            },
            {
              label: '二级 2-2',
              children: [
                {
                  label: '三级 2-2-1'
                },
                {
                  label: '三级 2-2-2'
                }
              ]
            }
          ]
        }
      ]
    }
  },
  methods: {
    handleNodeClick(data) {
      data.expand = !data.expand;
    }
  }
}
</script></code></pre>
<h2>3. 选中节点</h2>
<p>设置<code>show-checkbox</code>属性为true来显示选择框,设置<code>default-checked-keys</code>属性来默认选中节点,监听<code>check-change</code>事件来处理选中节点的变化:</p>
<pre><code class="language-html"><el-tree :data="data" show-checkbox :default-checked-keys="['1-2-2']" @check-change="handleCheckChange"></el-tree>
<script>
export default {
  data() {
    return {
      data: [
        {
          label: '一级 1',
          children: [
            {
              label: '二级 1-1',
              children: [
                {
                  label: '三级 1-1-1'
                },
                {
                  label: '三级 1-1-2'
                }
              ]
            },
            {
              label: '二级 1-2',
              children: [
                {
                  label: '三级 1-2-1'
                },
                {
                  label: '三级 1-2-2'
                }
              ]
            }
          ]
        },
        {
          label: '一级 2',
          children: [
            {
              label: '二级 2-1',
              children: [
                {
                  label: '三级 2-1-1'
                },
                {
                  label: '三级 2-1-2'
                }
              ]
            },
            {
              label: '二级 2-2',
              children: [
                {
                  label: '三级 2-2-1'
                },
                {
                  label: '三级 2-2-2'
                }
              ]
            }
          ]
        }
      ]
    }
  },
  methods: {
    handleCheckChange(data, node) {
      console.log(data, node);
    }
  }
}
</script></code></pre>
<h2>4. 自定义节点内容</h2>
<p>可以通过<code>slot-scope</code>来自定义节点的内容,例如:</p>
<pre><code class="language-html"><el-tree :data="data">
  <template slot-scope="{ node }">
    <span class="custom-node">{{ node.label }} (自定义)</span>
  </template>
</el-tree></code></pre>
<h2>5. 其他常用属性和方法</h2>
<ul>
  <li><code>highlight-current</code>: 是否高亮当前选中节点,默认为false。</li>
  <li><code>current-node-key</code>: 当前选中节点的key值。</li>
  <li><code>filter-node-method</code>: 自定义过滤节点的方法。</li>
  <li><code>updateKeyChildren</code>: 更新指定节点的子节点数据。</li>
  <li><code>setCheckedKeys</code>: 设置选中的节点。</li>
  <li><code>getCheckedKeys</code>: 获取选中的节点。</li>
  <li><code>getCheckedNodes</code>: 获取选中的节点数据。</li>
  <li><code>setChecked</code>: 设置指定节点的选中状态。</li>
</ul>
<p>更多属性和方法可以参考 Element UI 官方文档:<a href="https://element.eleme.cn/#/zh-CN/component/tree" target="_blank">https://element.eleme.cn/#/zh-CN/component/tree</a></p>
Element UI 树形组件使用教程 - 展示、展开、选中、自定义节点

原文地址: https://www.cveoy.top/t/topic/m9d0 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录