element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能

要实现 element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能,需要按照下面的步骤进行操作:

1.引入依赖:首先需要在项目中安装 element-ui 和 vue-bus,command:npm install element-ui vue-bus --save
2.在 main.js 中完成直接注册 bus:Vue.prototype.bus = new Vue();
3.为 el-tree 添加一个 slot,并在其中添加多选框 el-checkbox,并在其 change 方法中使用子组件的父组件方法,例如:$emit() 或者 $bus.emit() 发送自定义事件并传递值;
4.在父组件中,监听子组件传递过来的值,可以通过 $on() 或 $bus.$on() 方法进行监听,并在自定义事件函数的回调函数中接收值并处理即可;

示例一:

<template>
  <el-tree :data="dataList" :props="defaultProps" node-key="id">
    <span class="custom-checkbox" slot-scope="{ node }">
      <el-checkbox v-model="node.checked" @change="handleChange(node)"></el-checkbox>
    </span>
  </el-tree>
</template>

<script>
export default {
  data() {
    return {
      dataList: [
        {
          id: 1,
          label: "第一级",
          children: [
            {
              id: 2,
              label: "第二级",
              checked: false
            }
          ]
        }
      ]
    };
  },
  methods: {
    handleChange(node) {
      this.$bus.emit("tree-check-change", node.checked);
    }
  }
};
</script>

在上面代码中,我们使用了自定义的多选框来渲染每个节点,通过监听多选框的 change 事件并调用父组件的 $bus.$emit() 方法来发射一个自定义事件 “tree-check-change”,并传递了当前节点的checked属性作为参数。

接下来,我们在父组件中来监听自定义事件:

<template>
  <div>{{ checkedVal }}</div>
</template>

<script>
export default {
  data() {
    return {
      checkedVal: ""
    };
  },
  mounted() {
    this.$bus.$on("tree-check-change", checked => {
      this.checkedVal = checked;
    });
  }
};
</script>

在上述代码中,我们使用了 $bus.$on() 方法来监听来自子组件的自定义事件 “tree-check-change”,并在回调函数中来处理获取所选节点的checked属性,并绑定到原数据中的checkedVal属性上,以便在前端页面中进行和显示上的交互。

示例二:

<template>
  <el-tree :data="dataList" :props="defaultProps" node-key="id">
    <span class="custom-checkbox" slot-scope="{ node }">
      <el-checkbox v-model="node.checked" @change="handleChange(node)"></el-checkbox>
    </span>
  </el-tree>
</template>

<script>
export default {
  data() {
    return {
      dataList: [
        {
          id: 1,
          label: "第一级",
          children: [
            {
              id: 2,
              label: "第二级",
              checked: false
            }
          ]
        }
      ]
    };
  },
  methods: {
    handleChange(node) {
      this.$emit("tree-check-change", node.checked);
    }
  }
};
</script>

在上面的代码中,我们使用了 $emit() 方法来发射一个自定义事件 ‘tree-check-change’ 并传递了当前节点的 checked 属性,该组件在父组件中作为子组件使用。我们在父组件中来监听这个自定义事件的值:

<template>
  <div>chekced: {{ checked }}</div>
  <tree @tree-check-change="handleCheckrc"></tree>
</template>

<script>
import Tree from "./tree"

export default {
  components:{
    Tree
  },
  data() {
    return {
      checked: false
    };
  },
  methods: {
    handleCheckrc(checked) {
      this.checked = checked;
    }
  }
};
</script>

在上述代码中,我们使用 @tree-check-change 事件来捕获来自子组件的自定义事件 “tree-check-change”,在回调函数中获取所选节点的checked属性,并已经绑定在了原数据中的handledChcek属性上,已经可以在页面进行交互处理。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:element UI 中的 el-tree 实现 checkbox 单选框及 bus 传递参数功能 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • JS sort排序详细使用方法示例解析

    JS sort排序详细使用方法示例解析 在 Javascript 中,sort() 是一个常用的排序函数。sort() 可以按照数组元素的字母排序,也可以按照数字大小排序。 sort() 语法 sort() 函数的语法如下: array.sort(sortFunction) 其中,sortFunction 是可选的参数。如果省略该参数,那么 sort() 函…

    JavaScript 2023年6月11日
    00
  • JavaScript中循环遍历Array与Map的方法小结

    下面是详细讲解“JavaScript中循环遍历Array与Map的方法小结”的完整攻略。 一、循环遍历Array 1. for循环 使用for循环逐一遍历数组元素,并进行操作。示例如下: const arr = [‘a’, ‘b’, ‘c’, ‘d’]; for (let i = 0; i < arr.length; i++) { console.lo…

    JavaScript 2023年5月27日
    00
  • js文件中调用js的实现方法小结

    下面是详细讲解“js文件中调用js的实现方法小结”的完整攻略: 标题 js文件中调用js的实现方法小结 正文 在JS文件中调用JS需要使用到<script>标签,这个标签有两种用法: 方法1:直接引入JS文件 可以在使用外部JS文件的时候,在HTML文件中使用<script>标签,如下所示: <head> <titl…

    JavaScript 2023年5月27日
    00
  • JS中Array数组学习总结

    以下是关于“JS中Array数组学习总结”的完整攻略: JS中Array数组学习总结 概念 数组是一种有序的数据集合,是JavaScript中最重要的数据类型之一。数组可以通过索引访问、插入和删除其中的元素。 声明数组 数组的声明方式有两种,分别是字面量方式和构造函数方式。 // 字面量方式 let arr1 = [1, 2, 3, 4, 5]; // 构造…

    JavaScript 2023年5月27日
    00
  • vue3中router路由以及vuex的store使用解析

    Vue3是当前前端领域最流行的框架之一,它提供了一些重要的功能模块,如路由、状态管理等,允许我们轻松构建复杂的单页应用程序。在本篇文章中,我们将详细阐述Vue 3中Router路由以及Vuex的Store使用解析,从而帮助您快速掌握这些关键功能。 Router路由 安装和使用Router 首先让我们来介绍Vue 3中的Router路由,这是一个非常重要的功能…

    JavaScript 2023年6月11日
    00
  • js中的变量

    在JavaScript中,我们用var关键字来声明一个变量,var关键字后紧跟变量的名称,例如: var a1 = 40; a1就是变量的名称,用来标识一个变量,所以它又称为变量的标识符。一个变量的标识符必须是由字母、数字、下划线组成,但首字符不能为数字,如: 1user、#user 都不是正确的标识符,而user1、_user是正确的标识符。在JavaSc…

    JavaScript 2023年5月9日
    00
  • javascript实现循环广告条效果

    让我来为您详细讲解“javascript实现循环广告条效果”的完整攻略。 1. 实现思路 要实现循环广告条效果,需要一个滚动容器和多个图片元素,通过JavaScript动态设置滚动容器的left属性,使其滚动。 具体实现思路如下: 使用HTML和CSS构建基本布局,包括一个滚动容器和多个图片元素; 使用JavaScript动态获取滚动容器和图片元素的宽度,计…

    JavaScript 2023年6月11日
    00
  • 使用VSCode调试Electron主进程的方法步骤

    使用VSCode调试Electron主进程需要以下步骤: 安装必要的npm包和配置Electron 在电脑上安装Node.js和npm包管理器,然后在Electron项目目录下,运行以下命令安装必要的npm包: npm i –save-dev electron 在package.json中,添加以下代码: "main": "m…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部