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

yizhihongxing

要实现 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代码实现txt文件的上传预览功能

    下面是详细讲解 JavaScript 代码实现 txt 文件的上传预览功能的完整攻略。 准备工作 HTML 文件中添加一个文件上传的 input 标签,如下: <input type="file" id="fileInput"> 在 HTML 文件中创建一个用于预览文件内容的容器,如下: <div i…

    JavaScript 2023年5月27日
    00
  • javascript类型系统——日期Date对象全面了解

    JavaScript类型系统——日期Date对象全面了解 什么是Date对象 Date对象是JavaScript日期数据类型的对象表示法,它能够精确地表示精确到毫秒的日期和时间。 如何创建Date对象 Date对象的创建有以下几种方式: 1. 直接创建 可以通过new关键字直接创建Date对象。 const now = new Date(); console…

    JavaScript 2023年5月27日
    00
  • 如何动态加载外部Javascript文件

    动态加载外部 JavaScript 文件是指在页面运行时,通过 JavaScript 代码动态地向页面添加新的外部 JS 文件,并使其生效。这种方式可以提高页面的响应速度和减轻服务器压力,因为未使用的 JavaScript 代码不会提前加载,只有在需要时才被加载。 以下是实现动态加载外部 JavaScript 文件的完整攻略: 创建 <script&g…

    JavaScript 2023年5月27日
    00
  • JS数组的常用10种方法详解

    JS数组的常用10种方法详解 在JavaScript编程中,数组是一种十分常见的数据结构。JS数组提供了丰富的API供我们操作和处理数组,今天我们来详细讲解一下JS数组的常用10种方法。 1. push() arr.push(item1, item2, …, itemX) push()方法在数组的末尾添加一个或多个元素,并返回数组的新长度。例如: let…

    JavaScript 2023年5月27日
    00
  • JavaScript弹出窗口方法汇总

    下面我将详细讲解 “JavaScript弹出窗口方法汇总”的完整攻略。 概述 JavaScript一直是web前端开发中重要的一部分,而弹出窗口也经常用在网站中,例如注册,登录等,所以学习JavaScript弹出窗口技术是十分必要的。 一、常规弹窗方法 常规弹窗方法有以下两种: alert() alert() 是 JavaScript 内置的一个方法,用于弹…

    JavaScript 2023年5月18日
    00
  • jquery请求servlet实现ajax异步请求的示例

    下面我将为您提供详细讲解“jquery请求servlet实现ajax异步请求的示例”的完整攻略。 1. 准备工作 在开始之前,我们需要先完成以下几个准备工作: 确认您已经具备一定的 Java 和 jQuery 技能。 确认您已经安装了 Java 开发环境和一个 Web 服务器,例如 Tomcat。 确认您的 Web 服务器已经正常运行。 准备一个普通的 HT…

    JavaScript 2023年6月11日
    00
  • 简单聊一聊原生Ajax与JQuery Ajax

    一、原生Ajax 什么是原生Ajax? Ajax是Asynchronous JavaScript and XML的缩写,即异步的JavaScript和XML。AJAX 允许网页在不重新加载的情况下更新部分内容。原生Ajax是指使用JavaScript的XMLHttpRequest对象操作Web服务器执行异步数据交换(通常与JSON和XML数据格式一起使用)的…

    JavaScript 2023年5月19日
    00
  • 微信小程序tabBar模板用法实例分析【附demo源码下载】

    微信小程序tabBar模板用法实例分析 简介 本文将介绍微信小程序的tabBar模板用法,并提供一个demo供下载。 tabBar模板 tabBar模板可以让开发者更方便地实现小程序的底部导航栏功能。tabBar可以包含2-5个按钮,每个按钮对应一个不同的页面。当用户点击按钮时,小程序会自动跳转到相应的页面。 tabBar模板的常用属性有以下几个: back…

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