elementui组件中,树形组件的使用

项目场景:

elementui组件中,树形组件的使用


问题描述:

通过树形结构展示,点击勾选数据。没有展开树结构的情况下,勾选树节点时,其叶子节点全部被勾选,@check-change=“handleCheckChange”,叶子没有响应check-change函数

<el-dialog
        title="短信接受对象选择"
        :visible.sync="dialogVisible"
        width="40%"
        :close-on-click-modal="false">
        <el-row class="person-selected" :gutter="20">
          <div v-for="person in nameList" :key="person.key">
            {{ person.name }}
            <i class="el-icon-close" @click="eventPersonRemove(person.key)"></i>
          </div>
        </el-row>
        <el-row>
          <el-tree
              :data="data"
              show-checkbox
              node-key="id"
              ref="tree"
              :render-after-expand=false
              highlight-current
              @check-change="handleCheckChange">
          </el-tree>
        </el-row>
      <el-row class="form-footer">
        <el-button @click="resetChecked">重 置</el-button>
        <el-button type="primary" @click="dialogVisible = false">确 定</el-button>
      </el-row>
    </el-dialog>
return {
        dialogVisible: false,
        data: [
          {
          id: 2,
          label: '研发部',
          isLeaf: false,
          children: [{
            id: 5,
            label: '王五',
            isLeaf: true,
          }, {
            id: 6,
            label: '赵六',
            isLeaf: true,
          }]
        }, {
          id: 3,
          label: '综合部',
          isLeaf: false,
          children: [{
            id: 7,
            label: '张三',
            isLeaf: true,
          }, {
            id: 8,
            label: '李四',
            isLeaf: true,
          }]
        }],
        nameList:[],
        defaultProps: {
          children: 'children',
          label: 'label'
        },
      }


原因分析:

elementUI的tree控件,其属性render-after-expand(默认为true) 是否在第一次展开某个树节点后才渲染其子节点,应绑定为false,不展开节点也渲染其子节点。


解决方案:

resetChecked() {
        this.$refs.tree.setCheckedKeys([]);
      },
      handleCheckChange(data, checked, indeterminate) {
        // console.log(data.label)
        let self = this;
        if (checked === false){
          for (let i = 0; i < self.nameList.length; i++) {
            if (self.nameList[i].key === data.id){
              self.nameList.splice(i, 1);
              break;
            }
          }

        }else {
          if (data.isLeaf) {
            self.nameList.push({name:data.label, key:data.id})
          }

        }
      },
.person-selected {
    padding: 10px;
    div {
      position: relative;
      float: left;
      min-width: 100px;
      height: 30px;
      padding: 0 20px;
      margin: 0 10px 10px 0;
      line-height: 30px;
      color: #fff;
      text-align: center;
      background-color: #0a8d4f;
      border-radius: 15px;
      i {
        position: absolute;
        top: 0;
        right: 0;
        width: 20px;
        height: 30px;
        line-height: 30px;
        text-align: left;
        z-index: 1;
      }
    }
  }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Vue可以使用ElementUI树形组件来展示树形结构的数据。使用步骤如下: 1. 安装ElementUI组件库 可以通过npm或yarn安装ElementUI组件库,具体命令如下: ``` npm install element-ui --save ``` 或 ``` yarn add element-ui ``` 2. 引入ElementUI组件 在Vue项目的入口文件,引入ElementUI组件库和样式文件,具体代码如下: ```javascript import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 3. 使用树形组件 在Vue组件使用ElementUI的el-tree组件来展示树形结构的数据,具体代码如下: ```html <template> <el-tree :data="treeData" :props="treeProps"></el-tree> </template> <script> export default { data() { return { treeData: [ { 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' } ] } ] } ], treeProps: { label: 'label', children: 'children' } } } } </script> ``` 其,treeData是树形数据,treeProps是树形组件的配置项,用于指定树形数据的label和children字段。 以上就是使用ElementUI树形组件的基本步骤。 ### 回答2: Vue是一种流行的JavaScript框架,用于构建用户界面。ElementUI是一个基于Vue的UI组件库,其包含许多常见的UI组件,包括树形组件ElementUI树形组件使开发人员能够轻松创建树形结构的界面元素,并可以满足各种需求。 要使用ElementUI树形组件,首先需要在Vue应用程序安装ElementUI。有多种方法可以安装ElementUI,其包括使用npm、CDN或下载源代码。在安装完成后,开发人员可以在需要使用树形组件的地方包含ElementUI的<el-tree>标记。 使用ElementUI树形组件非常灵活。开发人员可以通过简单的属性更改来自定义树形组件的行为和外观。例如,可以使用expand-on-click-node”属性来控制树形节点是否可以通过单击展开/关闭。开发人员还可以使用“:data”属性来传递树形节点的数据。此外,ElementUI还提供了许多事件和插槽,以便更好地控制树形组件的行为。 在许多应用程序树形结构是重要的用户界面元素。使用ElementUI树形组件可以使开发人员更轻松地创建和管理树形结构,并可以提高应用程序的可维护性和性能。无论是开发单页面应用程序还是多页面应用程序,使用ElementUI树形组件都是一个不错的选择。 ### 回答3: Vue 使用 ElementUI 树形组件非常方便。ElementUI 是一个基于 Vue.js 的组件库,提供了丰富的 UI 组件,其包括了树形组件。以下是关于 Vue 使用 ElementUI 树形组件的一些注意事项和步骤: 安装 ElementUI: 在使用 ElementUI 之前,需要先安装它。在命令行执行以下命令即可: ``` npm install element-ui --save ``` 使用 ElementUI 树形组件: 在 Vue 项目使用 ElementUI 树形组件,需要先引入 ElementUI 和相应的组件。在 main.js 添加如下内容: ``` import Vue from 'vue' import ElementUI from 'element-ui' import 'element-ui/lib/theme-chalk/index.css' Vue.use(ElementUI) ``` 接下来就可以在需要使用树形组件的地方添加以下代码: ``` <template> <el-tree :data="data" :props="defaultProps"> </el-tree> </template> <script> export default { data() { return { data: [{ label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }] }, { label: '一级 2', children: [{ label: '二级 2-1', children: [{ label: '三级 2-1-1' }] }, { label: '二级 2-2', children: [{ label: '三级 2-2-1' }] }] }, { label: '一级 3', children: [{ label: '二级 3-1', children: [{ label: '三级 3-1-1' }] }, { label: '二级 3-2', children: [{ label: '三级 3-2-1' }] }] }], defaultProps: { children: 'children', label: 'label' } } } } </script> ``` 在这个例子,我们使用了一个简单的树形结构。需要注意的是,在 data 定义了树的结构,而在 defaultProps ,则定义了树的属性。 以上就是 Vue 使用 ElementUI 树形组件的简单介绍。使用 ElementUI 提供的树形组件,可以更加轻松地实现树形结构的展示,并且具有良好的用户交互体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

绀香之末

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值