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日

相关文章

  • 《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史

    下面是《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史的详细攻略: 目录 简介 JavaScript 的诞生 JavaScript 的发展历程 JavaScript 的现状和未来 总结 简介 本篇读书笔记主要介绍了JavaScript的简史,该章节主要根据《JavaScript DOM 编程艺术》(第二版)第2章内容整理而来。 …

    JavaScript 2023年6月10日
    00
  • js将当前时间格式转换成时间搓(自写)

    下面是关于如何将当前时间格式转换成时间戳的攻略。 什么是时间戳? 在计算机系统中,时间戳(timestamp),指的是一种类似于日期的格式,是一组单调递增的数字,通常表示从某个特定的时间点开始经过的秒数或毫秒数。 JS中将当前时间格式转换成时间戳的方法 JS中可以采用Date对象及其内置的方法来获取当前时间的格式,并将其转换为时间戳。 获取当前时间的格式 可…

    JavaScript 2023年5月27日
    00
  • 关于Iframe如何跨域访问Cookie和Session的解决方法

    关于Iframe如何跨域访问Cookie和Session的解决方法,通常有以下两种方式: 1.使用后端代理 使用后端代理的方式是通过后端站点中间转发的方式,将前端站点的请求中所需要用到的Cookie和Session内容在后端进行获取,然后在响应时一并返回给前端站点,从而实现跨域访问。这种方式依赖于后端站点的代码,通常需要在后端站点中手动编写或者引入第三方库来…

    JavaScript 2023年6月11日
    00
  • 在JavaScript中处理时间之getHours()方法的使用

    在JavaScript中处理时间之getHours()方法的使用 getHours()是JavaScript的Date对象的方法,用于获取当前的小时数。这个方法返回一个0到23之间的整数,表示当前时间的小时数。 语法 date.getHours() 其中date是一个Date对象。 示例说明 示例1:获取当前时间的小时数 let now = new Date…

    JavaScript 2023年5月27日
    00
  • JS实现视频弹幕效果

    下面是 JS 实现视频弹幕效果的完整攻略: 准备工作 首先,我们需要准备好以下两个文件:- 视频文件- 弹幕 JSON 文件 其中,弹幕 JSON 文件应该包含以下字段:- text:弹幕文本内容- time:弹幕出现时间,单位为秒- color:弹幕颜色,可以是颜色代码或颜色名称 实现步骤 在 HTML 中添加视频和画布元素 在 HTML 中添加一个 vi…

    JavaScript 2023年6月10日
    00
  • 深入浅析Angular SSR

    关于“深入浅析Angular SSR”的完整攻略,下面是详细的讲解: 什么是Angular SSR Angular SSR(Server-Side Rendering)是指在服务端执行Angular应用程序并生成HTML响应的过程。通俗的说,就是在服务端预渲染且构造HTML并且在传回浏览器渲染时设置完整的、原始的HTML文档。这样可以提高应用程序的首次加载速…

    JavaScript 2023年6月11日
    00
  • JS操作json对象key、value的常用方法分析

    今天我们一起来详细讲解一下JS操作json对象key、value的常用方法分析。 常用方法分析 在JS中,我们可以使用以下一些方法来操作json对象中的key和value。 1. 获取json对象的keys 我们可以使用Object.keys()方法来获取json对象中所有的keys,具体用法如下所示: const json = { name: "…

    JavaScript 2023年5月27日
    00
  • Javascript中作用域的详细介绍

    Javascript中作用域的详细介绍 Javascript中的作用域是指变量的可见范围,也就是在代码中访问变量的能力。在Javascript中,有全局作用域和局部作用域之分。在全局作用域中声明的变量,可以被程序中的任何其他代码所访问,而在局部作用域中声明的变量,只能被函数内部代码所访问。 全局作用域 全局作用域是在所有函数的外部声明变量的作用域。在全局作用…

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