Select 组件实现【全选】(基于 Element)

〇、前言

在 Element 中,Select 组件支持单选和多选,但是并没有全选的属性,因此只能通过其事件和属性来实现,本文将实现一个简单的示例。

注意:本文的示例中,通过 leixing1来兼容多控件共享同一方法。

一、两种实现

1.1 通过添加一个 Checkbox 来操作全选(推荐)

  • 大致思路

在全部选项最上边添加一个 Checkbox 复选框,勾选时自动全选,取消勾选自动取消全部已选中项。

再给 Select 添加一个 Change 事件方法,当选中项等于备选列表长度,则自动勾选 Checkbox,否则取消勾选。

  • 实现效果
  • 前端实现代码

    <el-select
    class="select-item uniform-width"
    v-model="formData.leixing1"
    filterable multiple
    clearable @change="changeSelect($event,'leixing1')"
    placeholder="全部类型(多选)"

    复制代码
    <el-checkbox :indeterminate="isIndeterminate_lx" v-model="checked" @change="selectAll('leixing1')" style="padding:5px 0 10px 20px;">全选</el-checkbox>
    <el-option
      v-for="item in leixing1OptionsList"
      :label="item.mingcheng"
      :value="item.bianma"
      :key="item.bianma"
    />
  • js 代码实现

1.2 通过增加一个 Option 选项'全选'来实现

  • 大致思路

手动增加 Select 的第一个选项'全选',通过这个选项的事件,来操作是否全选。

再通过列表的长度和已选中的选项进行比较,相等就自动勾选'全选',否则就取消勾选。

注意:Select 组件的值会包含'全选'这个值,需要在后端进行过滤。

  • 实现效果
  • 前端控件代码

    <el-select
    class="select-item uniform-width"
    v-model="formData.leixing1"
    filterable multiple
    clearable @change="changeSelect($event,'leixing1')"
    placeholder="全部类型(多选)"

    复制代码
    <el-option label='全选' value='全选' @click.native="selectAll('leixing1')" v-if="leixing1OptionsList.length"></el-option>
    <el-option
      v-for="item in leixing1OptionsList"
      :label="item.mingcheng"
      :value="item.bianma"
      :key="item.bianma"
    />
  • js 代码实现及解释

相关推荐
索西引擎几秒前
【React】Immer.js 在现代 Redux 生态中的角色:不可变性保障的工程化实现与开发体验优化
前端·javascript·react.js
大卫陈13 分钟前
微信小程序虚拟支付实战:从「支付能力被限制」到沙箱调通的全过程
前端·后端
武子康13 分钟前
vLLM 0.25.1:服务没有报错,为什么仍会生成垃圾 Token(5 级正确性门禁 + 自动回滚条件)
前端·人工智能·后端
jyp2012110717 分钟前
Vue3 Diff 算法
前端·vue.js
胡萝卜术21 分钟前
抽象的三级跳:从原生 DOM 到 React 组件树,我们到底在解决什么问题?
前端·javascript·面试
黄敬峰24 分钟前
从零理解React:事件、组件与响应式——一个WebGPU Demo的前端笔记
前端·面试
weedsfly38 分钟前
从类继承到自定义 Hook:模板方法模式的前端演进
前端·javascript·面试
Quz39 分钟前
QML 线性布局:Row/RowLayout 与 Column/ColumnLayout
前端·qt
你为她披上外套时我正站在窗外43 分钟前
用 Rust + WebAssembly 写了个字幕工具,文件全程不离开浏览器
前端
帅帅哥的兜兜43 分钟前
AI模型初了解
前端