vue的select下拉框多选项-multiple属性

简介: vue的select下拉框多选项-multiple属性

最近在使用vue-element-admin这个后台管理框架开源模板在做一个管理后台,使用起来其实还挺方便的,大部分的组件源码里面都已经写好了,用的时候只需要把源码拿出来修改修改,也就成了。

这里记录一下开发过程中遇到的一些功能。

今天记录一个select下拉框单选或者多选项,支持删除的功能

其实很简单的,需要添加一个属性

为el-select设置multiple属性即可启用多选

饿了么这个框架的文档给的十分的全面,

组件是非常的丰富的

 


<template>
  <el-select v-model="value1" multiple placeholder="请选择">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
  <el-select
    v-model="value2"
    multiple
    collapse-tags
    style="margin-left: 20px;"
    placeholder="请选择">
    <el-option
      v-for="item in options"
      :key="item.value"
      :label="item.label"
      :value="item.value">
    </el-option>
  </el-select>
</template>
<script>
  export default {
    data() {
      return {
        options: [{
          value: '选项1',
          label: '黄金糕'
        }, {
          value: '选项2',
          label: '双皮奶'
        }, {
          value: '选项3',
          label: '蚵仔煎'
        }, {
          value: '选项4',
          label: '龙须面'
        }, {
          value: '选项5',
          label: '北京烤鸭'
        }],
        value1: [],
        value2: []
      }
    }
  }
</script>

实际应用的demo,参考代码index.vue

<template>
  <div class="tab-container">
    <el-form
      ref="dataForm"
      label-position="left"
      label-width="90px"
      style="width: 400px; margin-left:50px;"
    >
      <el-form-item label="题目">
        <el-input type="textarea" :rows="2" v-model="nextProjectForm.questionContent"></el-input>
      </el-form-item>
      <el-form-item label="正确答案" prop="correctAnswer">
        <el-input v-model="nextProjectForm.correctAnswer" />
      </el-form-item>
      <el-form-item label="其他答案1" prop="otherAnswer1">
        <el-input v-model="nextProjectForm.otherAnswer1" />
      </el-form-item>
      <el-form-item label="其他答案2" prop="otherAnswer2">
        <el-input v-model="nextProjectForm.otherAnswer2" />
      </el-form-item>
      <el-form-item label="其他答案3" prop="otherAnswer3">
        <el-input v-model="nextProjectForm.otherAnswer3" />
      </el-form-item>
      <el-form-item label="所属年级">
        <el-select
          v-model="nextProjectForm.userGrades"
          class="filter-item"
          placeholder="选择年级"
          multiple
          style="width: 311px; "
        >
          <el-option
            v-for="item in tabMapOptions"
            :key="item.key"
            :label="item.label"
            :value="item.key"
          />
        </el-select>
      </el-form-item>
    </el-form>
    <div slot="footer" class="dialog-footer">
      <el-button type="primary" @click="createData()">确定</el-button>
    </div>
  </div>
</template>
<script>
//调用接口
import { saveSubject } from "@/api/content";
export default {
  data() {
    return {
      gradeSelect: "",
      tabMapOptions: [
        { label: "幼儿园", key: "kinderGarten" },
        { label: "一年级", key: "firstGrade" },
        { label: "二年级", key: "twoGrade" },
        { label: "三年级", key: "threeGrade" },
        { label: "四年级", key: "fourGrade" },
        { label: "五年级", key: "fiveGrade" },
        { label: "六年级", key: "sixGrade" },
      ],
      nextProjectForm: {
        questionContent: "",
        correctAnswer: "",
        otherAnswer1: "",
        otherAnswer2: "",
        otherAnswer3: "",
        userGrades: [],
        questionCategory: "",
      },
    };
  },
  methods: {
    //添加增加题目
    async createData() {
      let form = null;
      form = this.nextProjectForm;
      const params = form;
      const res = await saveSubject(params);
      console.log(res);
      if (res.code === "0000") {
        this.$message({
          type: "info",
          message: "保存成功",
        });
        return;
      }
      this.$message({
        type: "error",
        message: "保存失败",
      });
    },
  },
};
</script>
<style scoped>
.tab-container {
  margin: 30px;
}
</style>

api

import request from '@/utils/request'
//保存题目分类接口
export async function saveSubjectCategory(data) {
  const res = await request({
    url: '/question/saveQuestionCategory',
    method: 'post',
    data
  })
  return res
}

 

当select下拉框选择其中一个数据的时候,传到后端的参数

 

 

当select下拉框选择其中多个数据的时候,传到后端的参数

 

 

相关文章
|
8月前
|
JavaScript
Vue中如何实现兄弟组件之间的通信
在Vue中,兄弟组件可通过父组件中转、事件总线、Vuex/Pinia或provide/inject实现通信。小型项目推荐父组件中转或事件总线,大型项目建议使用Pinia等状态管理工具,确保数据流清晰可控,避免内存泄漏。
699 2
|
7月前
|
缓存 JavaScript
vue中的keep-alive问题(2)
vue中的keep-alive问题(2)
596 137
|
10月前
|
人工智能 JSON JavaScript
VTJ.PRO 首发 MasterGo 设计智能识别引擎,秒级生成 Vue 代码
VTJ.PRO发布「AI MasterGo设计稿识别引擎」,成为全球首个支持解析MasterGo原生JSON文件并自动生成Vue组件的AI工具。通过双引擎架构,实现设计到代码全流程自动化,效率提升300%,助力企业降本增效,引领“设计即生产”新时代。
716 1
|
10月前
|
JavaScript 安全
在 Vue 中,如何在回调函数中正确使用 this?
在 Vue 中,如何在回调函数中正确使用 this?
507 0
|
11月前
|
人工智能 JavaScript 算法
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
Vue 中 key 属性的深入解析:改变 key 导致组件销毁与重建
1138 0
|
JavaScript
vue实现任务周期cron表达式选择组件
vue实现任务周期cron表达式选择组件
1427 4
|
11月前
|
JavaScript UED
用组件懒加载优化Vue应用性能
用组件懒加载优化Vue应用性能
|
12月前
|
JavaScript 数据可视化 前端开发
基于 Vue 与 D3 的可拖拽拓扑图技术方案及应用案例解析
本文介绍了基于Vue和D3实现可拖拽拓扑图的技术方案与应用实例。通过Vue构建用户界面和交互逻辑,结合D3强大的数据可视化能力,实现了力导向布局、节点拖拽、交互事件等功能。文章详细讲解了数据模型设计、拖拽功能实现、组件封装及高级扩展(如节点类型定制、连接样式优化等),并提供了性能优化方案以应对大数据量场景。最终,展示了基础网络拓扑、实时更新拓扑等应用实例,为开发者提供了一套完整的实现思路和实践经验。
1633 78
|
缓存 JavaScript 前端开发
Vue 基础语法介绍
Vue 基础语法介绍
|
11月前
|
JavaScript 前端开发 开发者
Vue 自定义进度条组件封装及使用方法详解
这是一篇关于自定义进度条组件的使用指南和开发文档。文章详细介绍了如何在Vue项目中引入、注册并使用该组件,包括基础与高级示例。组件支持分段配置(如颜色、文本)、动画效果及超出进度提示等功能。同时提供了完整的代码实现,支持全局注册,并提出了优化建议,如主题支持、响应式设计等,帮助开发者更灵活地集成和定制进度条组件。资源链接已提供,适合前端开发者参考学习。
703 17