下拉框组件的封装(element ui )

2023-09-21 14:14:53

目录

实现思路

创建通用的下拉选择框组件

如何使用这个组件

结语


当你使用Vue.js构建Web应用时,封装可复用组件是提高开发效率和代码可维护性的关键之一。在这篇文章中,我们将探讨如何使用Vue.js来创建一个通用的下拉选择框组件,以及如何将它封装成一个可配置的组件。

实现思路

一级联动

  • 先从饿了么拿下拉列表
  • 数据处理
  • 提示名处理
  • 设定默认值(直接设定result即可),用computed来做

二级联动

  • 增加子项,子项数据默认为空数组
  • 付项增加children数据
  • 父项加一个函数,用来取到children设置给子项
  • 处理父项默认数据,子项也跟着默认数据

创建通用的下拉选择框组件

首先,让我们创建一个通用的下拉选择框组件。这个组件将使用Element UI的<el-select><el-option>来实现。它具有以下特点:

  • 支持通过props传入数据,包括下拉选项的选项列表、占位符等。
  • 当选择项发生变化时,可以触发一个自定义的change事件,并且可以通过回调函数处理选择结果。
  • 可以支持筛选功能,使用户可以搜索选择项。
<template>
  <el-select
    v-model="value"
    filterable
    :placeholder="select.name || '请选择'"
    @change="change"
  >
    <el-option
      v-for="item in select.data"
      :key="item.value"
      :label="item.label"
      :value="item.value"
    >
    </el-option>
  </el-select>
</template>

<script>
export default {
  props: {
    select: Object,
  },
  data() {
    return {};
  },
  computed: {
    value: {
      get() {
        this.select.result && this.change(this.select.result);
        return this.select.result;
      },
      set() {},
    },
  },
  methods: {
    change(val) {
      this.select.result = val;
      console.log(this.select.result);
      this.select.change && this.select.change(this.buildChildren(val));
    },
    buildChildren(val) {
      let data = this.select.data.find((item) => {
        return item.value == val;
      });
      return data.children;
    },
  },
};
</script>

如何使用这个组件

现在,让我们看看如何在Vue.js应用中使用这个通用的下拉选择框组件。首先,你需要导入这个组件并注册它,然后可以在模板中使用它。

<template>
  <div class="table-page">
    <Select :select="select"></Select>
    <Select :select="selectChild"></Select>
  </div>
</template>
<script>
import Select from "./componentsdemo/SelectMain.vue";
export default {
  name: "Index",
  components: {
    Select,
  },

  data() {
    return {
      selectChild: {
        result: "",
        name: "食物子项",
        data: [],
      },
      select: {
        result: "选项2",
        name: "食物",
        change: (data) => {
          console.log(data);
          this.selectChild.result = "";
          this.selectChild.data = data;
        },

        data: [
          {
            value: "选项1",
            label: "黄金糕",
            children: [
              {
                value: "选项1-1",
                label: "黄金糕1-1",
              },
              {
                value: "选项1-2",
                label: "黄金糕1-2",
              },
            ],
          },
          {
            value: "选项2",
            label: "双皮奶",
            children: [
              {
                value: "选项2-1",
                label: "双皮奶2-1",
              },
              {
                value: "选项2-2",
                label: "双皮奶2-2",
              },
            ],
          },
          {
            value: "选项3",
            label: "蚵仔煎",
          },
          {
            value: "选项4",
            label: "龙须面",
          },
          {
            value: "选项5",
            label: "北京烤鸭",
          },
        ],
      },
    };
  },
  methods: {
    submit() {
      console.log(this.select);
    },
  },
};
</script>

在上述示例中,我们首先导入了通用下拉选择框组件,然后在模板中使用它,并将需要的数据传递给它。当选择项发生变化时,我们可以通过@change事件来处理选择结果。

结语

通过封装通用组件,我们可以在Vue.js应用中轻松地实现重复使用的功能,提高开发效率并减少重复工作。通用下拉选择框组件是一个很好的例子,它可以根据不同的需求进行配置,使其适用于多种情况。希望本文对你理解如何创建和使用Vue.js组件有所帮助!

更多推荐

【springMvc】自定义注解的使用方式

🎬艳艳耶✌️:个人主页🔥个人专栏:《Spring与Mybatis集成整合》⛺️生活的理想,为了不断更新自己!1.前言1.1.什么是注解Annontation是Java5开始引入的新特征,中文名称叫注解。它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进

CSS动效合集之实现气泡发散动画

前言👏CSS动效合集之实现气泡发散动画,速速来Get吧~🥇文末分享源代码。记得点赞+关注+收藏!1.实现效果2.实现步骤定义一个数组bubbles,用来存储气泡列表的基本新,w表示宽高,x表示绝对定位中left的百分比注:以下代码基于vueconstbubbles=ref([{w:8,x:10,},{w:9,x:5

驱动开发,IO模型之IO多路复用实现过程,select方式

1.IO多路复用简介当在应用程序中同时实现对多个硬件数据读取时就需要用到IO多路复用。io多路复用有select/poll/epoll三种实现方式。如果进程同时监听的多个硬件数据都没有准备好,进程切换进入休眠状态,当一个或者多个硬件数据准备就绪后,休眠的进程被唤醒,读取准备好的硬件数据。本实验监听自定义事件和鼠标事件;

【AI视野·今日Robot 机器人论文速览 第三十七期】Wed, 20 Sep 2023

AI视野·今日CS.Robotics机器人学论文速览Wed,20Sep2023Totally53papers👉上期速览✈更多精彩请移步主页DailyRoboticsPapersMachineLearning-DrivenBurrowingwithaSnake-LikeRobotAuthorsSeanEven,Hold

华为HCIA(四)

链路聚合可以负载分担,增加带宽,提高可靠性Eth-trunk的传输速率和成员端口数量喝带宽有关路由器分割广播域,交换机分割冲突域指定端口:DP;根端口:RP;阻塞端口:AP如果目的MAC不在交换机MAC中,就会进行泛洪处理VAP可以根据不同用户,提供不同的网络服务华为企业级AP支持的工作模式有CloudFATFITVl

8、DVWA——XSS(Reflected)

文章目录一、XSS概述二、Low2.1源码审计2.2通关思路三、Medium3.1源码分析3.2通关思路四、High4.1源码分析4.2通关思路一、XSS概述跨站点脚本(XSS)攻击是一种注入攻击,恶意脚本会被注入到可信的网站中。当攻击者使用web应用程序将恶意代码(通常以浏览器端脚本的形式)发送给其他最终用户时,就会

3dsmax模型烘焙光照贴图并导入unity流程详解

目录前言软件环境前置知识储备一、模型场景搭建二、模型材质处理三、vray渲染准备四、烘焙至贴图五、unity场景准备六、贴图与材质前言该流程针对某些固定场景(模型发布、无法使用实时渲染引擎等)情况下的展示,本文记录烘焙流程与导入unity后赋予材质、材质随时间渐变(模拟天气系统)的流程。软件环境win103dsmax2

【多线程学习】线程池、简单的银行取款模拟

学习代码如下,教程来自:http://www.seestudy.cn/?list_9/42.html#include<iostream>#include<thread>#include<string>#include<mutex>#include<condition_variable>#include<queue>#i

Redis从入门到精通(三:常用指令)

前边我们介绍了redis存储的四种基本数据类型,并纵向介绍了这四种数据类型的各种指令操作,现在我们这个章节从横向来总结一下关于key的常用指令和数据库常用指令key常用指令删除指定keydelkey获取key是否存在existskey获取key的类型typekey排序sort改名renamekeynewkeyrenam

时序预测 | MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元时间序列预测

时序预测|MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元时间序列预测目录时序预测|MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元时间序列预测预测效果基本介绍程序设计参考资料预测效果基本介绍MATLAB实现POA-CNN-BiGRU鹈鹕算法优化卷积双向门控循环单元时

CAN一致性测试

目录CAN一致性测试概述物理层一致性测试数据链路层一致性测试应用层一致性测试CAN一致性测试概述什么是一致性测试?一致性测试是用来检验一个半导体、零部件(ECU)以及软件是否符合规范的测试流程。通过执行“一致性测试”,可以验证被测件是否符合通讯协议规范,从而排除不同工程师的理解差异。为什么要进行一致性测试?为了保证产品

热文推荐