vue element select多选回显

我们经常在使用 Element组件里面的 select多选

场景:添加账号的时候需要选择可见分公司(分公司为多选),添加成功之后可以编辑,需要回显添加时所提交的分公司

代码如下:

多选框:

data(){
return{
  oldSearchJobType: [],
companyIds: "", //分公司数据id
companyList: [], //分公司列表
companyListAll: { id: "", visibleCompany: "全部" }, //分公司列表
ruleForm: {
company: [], //分公司
},
}}
<el-form-item label="可见分公司:" prop="company">
<el-select
v-model="ruleForm.company"
multiple
collapse-tags
@change="changCompany"
placeholder="请选择可见分公司"
>
<el-option
v-for="item in companyList"
:key="item.id"
:label="item.visibleCompany"
:value="item.id"
></el-option>
</el-select>
</el-form-item>

获取分工公司接口时:

添加一个全部的选项,拼接到分公司里面去,然后把分公司的id 循环取出来(因为向后台传输数据的时候需要传id)

this.$http
        .post("/crm/customer/visibleCompanyList")
        .then(response => {
          //分公司数据
          this.companyList = response.data.result;
          this.companyList.unshift(this.companyListAll);
          let ids = [];
          this.companyList.map(item => {
            ids.push(item.id);
            this.companyIds = ids;
          });
        })
        .catch(res => {
          console.error("请求失败", res);
        });
在点击编辑时,后台需要返回分公司的名称及id , 需要这有这样存起来
let companyArr = []; //分公司
let companyIds = []; //分公司id
companyArr = response.data.result.visibleCompanyNameStr.split(",");
companyIds = response.data.result.visibleCompanyIdStr.split(",");
//给分公司赋值
    changCompany(val) {
      let allValues = [];
      allValues = this.companyIds;

      const oldVal =
        this.oldSearchJobType.length === 1 ? this.oldSearchJobType[0] : [];
      // 若是全部选择
      if (val.includes("")) this.ruleForm.company = allValues;
      // 取消全部选中 上次有 当前没有 表示取消全选
      if (oldVal.includes("") && !val.includes("")) this.ruleForm.company = [];
      // 点击非全部选中 需要排除全部选中 以及 当前点击的选项
      // 新老数据都有全部选中
      if (oldVal.includes("") && val.includes("")) {
        const index = val.indexOf("");
        val.splice(index, 1); // 排除全选选项
        this.ruleForm.company = val;
      }
      // 全选未选 但是其他选项全部选上 则全选选上 上次和当前 都没有全选
      if (!oldVal.includes("") && !val.includes("")) {
        if (val.length === allValues.length - 1)
          this.ruleForm.company = [""].concat(val);
      }
      // 储存当前最后的结果 作为下次的老数据
      this.oldSearchJobType[0] = this.ruleForm.company;
    },

以上代码就完成了多选编辑回显的功能,点击确认编辑的时候 

this.ruleForm.company.toString()  (转不转toString() 具体要看后台的接收方式,字符串就转,数组就不需要了)

 

转载于:https://www.cnblogs.com/lidonglin/p/11577592.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 HTML 中,可以使用 "multiple" 属性来实现 "select" 元素的多选回显。可以在 "select" 标签中加入 "multiple" 属性来实现。例如:`<select multiple>`。在选中多个选项时,可以使用 JavaScript 来获取已选中的选项。 ### 回答2: Element UI是一套基于Vue.js 2.0的桌面端组件库,可帮助开发者快速构建出优美、易用的界面。其中select组件提供了多选功能,可以让用户一次性选择多个选项。在用户选择完成后,需要将已选择的选项回显到页面上,方便用户查看和操作。 Elementselect多选回显主要有以下几种方式: 1. 使用v-model双向绑定数据 首先,在select组件标签上使用v-model指令进行双向绑定,将选择的选项绑定在一个数组中。例如: ``` <el-select v-model="selectedOptions" multiple> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> ``` 其中,selectedOptions就是绑定的数组,options为需要选择的选项。 然后,在页面上需要回显选中选项的地方,使用v-for指令遍历selectedOptions数组,并输出每个选项的label值即可。 2. 使用ref属性获取组件实例 另外一种方式是在select组件上使用ref属性获取组件实例。然后在选择完成后,通过组件实例的方法获取所选择的选项,并进行回显。 例如: ``` <el-select ref="mySelect" multiple> <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> ``` 然后,在选择完成后,通过ref获取组件实例,再使用getSelected方法获取用户已选择的选项,最后通过遍历选项并显示label值进行回显。 ``` this.$refs.mySelect.getSelected().forEach(option => { console.log(option.label); }); ``` 总结 以上就是Elementselect多选回显的两种方式。使用v-model双向绑定数据方式简单方便,而使用ref属性获取组件实例方式方法灵活,开发者可以根据实际需求进行选择。无论哪种方式,开发者都需要对所选中的选项进行遍历,将选项中的label值进行回显。 ### 回答3: elementselect组件是一个常用的下拉框组件,用于选择单个选项。但有时候我们需要选择多个选项,并将选中的选项回显到页面上,element也提供了相应的解决方案。 首先,我们需要将select组件的multiple属性设置为true,即可启用多选功能。同时,我们也需要给select组件绑定一个v-model,用于存储选中的选项值。例如: ``` <el-select v-model="selectedOptions" multiple> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> ``` 在数据中,我们需要定义selectedOptions数组,用于存储选中的选项值。例如: ``` data() { return { selectedOptions: [] } } ``` 此时,我们已经可以在页面上选中多个选项,但还需要将选中的选项回显到页面上。我们可以使用forEach遍历selectedOptions数组,动态生成标签来显示选中的选项,例如: ``` <template> <div> <el-select v-model="selectedOptions" multiple> <el-option label="选项1" value="option1"></el-option> <el-option label="选项2" value="option2"></el-option> <el-option label="选项3" value="option3"></el-option> </el-select> <div> <span v-for="(option, index) in selectedOptions" :key="index">{{option}}</span> </div> </div> </template> <script> export default { data() { return { selectedOptions: [] } } } </script> ``` 以上就是elementselect多选回显的实现方法。通过设置multiple属性和绑定v-model,我们可以启用多选功能并存储选中的选项值,在页面上通过动态生成标签的方式回显选中的选项。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值