最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

el-select 下拉框多选实现全选的实现

来源:懂视网 责编:小采 时间:2020-11-27 21:52:59
文档

el-select 下拉框多选实现全选的实现

el-select 下拉框多选实现全选的实现:在写一个功能时发现el-select支持多选,但是竟然不支持全选,好无语哦,那就自己实现一下吧~有两种方法,第二种感觉简单些 方法一:下拉项增加一个【全选】,然后应该有以下几种情况: 下拉选项全都勾选时,【全选】自动勾选; 下拉选项部分勾选时,点击【全
推荐度:
导读el-select 下拉框多选实现全选的实现:在写一个功能时发现el-select支持多选,但是竟然不支持全选,好无语哦,那就自己实现一下吧~有两种方法,第二种感觉简单些 方法一:下拉项增加一个【全选】,然后应该有以下几种情况: 下拉选项全都勾选时,【全选】自动勾选; 下拉选项部分勾选时,点击【全

在写一个功能时发现el-select支持多选,但是竟然不支持全选,好无语哦,那就自己实现一下吧~有两种方法,第二种感觉简单些

方法一:下拉项增加一个【全选】,然后应该有以下几种情况:

  1. 下拉选项全都勾选时,【全选】自动勾选;
  2. 下拉选项部分勾选时,点击【全选】后,所有下拉项全部勾选;
  3. 下拉选项全都未勾选时,点击【全选】后,所有下拉选项不勾选;
  4. 下拉选项和【全选】都选上的时候,不勾选任意下拉选项,【全选】按钮就不勾选了;

上面就是我要实现的功能,我好啰嗦。。还是看代码吧。。

html部分:

<template>
 <el-select multiple collapse-tags v-model='selectedArray' @change='changeSelect' @remove-tag='removeTag' placeholder='请选择'>
 <el-option label='全选' value='全选' @click.native='selectAll'></el-option>
 <el-option v-for='(item, index) in options' :key='index' :label='item.name' :value='item.name'></el-option>
 </el-select>
</template>

js部分:

export default {
 data() {
 return {
 selectedArray: [],
 options: [
 { name: '一一', label: 'one' },
 { name: '二二', label: 'tow' },
 { name: '三三', label: 'three' },
 { name: '四四', label: 'four' },
 { name: '五五', label: 'five' }
 ]
 }
 },
 methods: {
 selectAll() {
 if (this.selectedArray.length < this.options.length) {
 this.selectedArray = []
 this.options.map((item) => {
 this.selectedArray.push(item.name)
 })
 this.selectedArray.unshift('全选')
 } else {
 this.selectedArray = []
 }
 },
 changeSelect(val) {
 if (!val.includes('全选') && val.length === this.options.length) {
 this.selectedArray.unshift('全选')
 } else if (val.includes('全选') && (val.length - 1) < this.options.length) {
 this.selectedArray = this.selectedArray.filter((item) => {
 return item !== '全选'
 })
 }
 },
 removeTag(val) {
 if (val === '全选') {
 this.selectedArray = []
 }
 }
 }
}

看看效果图:

方法二:直接添加一个【全选】复选框,实现的功能跟方法一是一样的

html部分:

<template>
 <el-select multiple collapse-tags v-model='selectedArray' @change='changeSelect' placeholder='请选择'>
 <el-checkbox v-model="checked" @change='selectAll'>全选</el-checkbox>
 <el-option v-for='(item, index) in options' :key='index' :label='item.name' :value='item.name'></el-option>
 </el-select>
</template>

js部分:

export default {
 data() {
 return {
 checked: false,
 selectedArray: [],
 options: [
 { name: '一一', label: 'one' },
 { name: '二二', label: 'tow' },
 { name: '三三', label: 'three' },
 { name: '四四', label: 'four' },
 { name: '五五', label: 'five' }
 ]
 }
 },
 methods: {
 selectAll() {
 this.selectedArray = []
 if (this.checked) {
 this.options.map((item) => {
 this.selectedArray.push(item.name)
 })
 } else {
 this.selectedArray = []
 }
 },
 changeSelect(val) {
 if (val.length === this.options.length) {
 this.checked = true
 } else {
 this.checked = false
 }
 }
 }
}

css:

.el-checkbox {
 text-align: right;
 width: 100%;
 padding-right: 10px;
 }

效果图:

文档

el-select 下拉框多选实现全选的实现

el-select 下拉框多选实现全选的实现:在写一个功能时发现el-select支持多选,但是竟然不支持全选,好无语哦,那就自己实现一下吧~有两种方法,第二种感觉简单些 方法一:下拉项增加一个【全选】,然后应该有以下几种情况: 下拉选项全都勾选时,【全选】自动勾选; 下拉选项部分勾选时,点击【全
推荐度:
标签: 全选 多选 实现
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top