0


在element UI的下拉多选框里如何实现禁用默认值和不可删除默认值

移动到默认值上会变成禁用的图标,点击没有反应。

在做到默认值不能删除这部分时,我看大部分都是在main,js里定义一个自定义指令,我没有用自定义指令,可以说我的方法非常原始?就是笨办法吧,下面是我的解决方法。

1、首先,肯定要在data里定义一个数组,专门存放默认值,

  1. clone_material_ids: [],

2、在请求成功后把返回的值克隆,也就是给到这个数组

  1. this.clone_material_ids = this.summaryForm.material_ids

3、这是我的页面布局代码,我在这里加了 @remove-tag="removeTag"实现默认值不可删除

:disabled="isDisabled(option.materialId)"默认值在下拉框中是禁用的

  1. <el-form-item label="选择物料" :rules="[{ required: true, message: '请选择物料',
  2. trigger: 'blur' },]">
  3. <el-select v-model="updateForm.material_ids" placeholder="请选择物料" multiple
  4. filterable style="width: 100%;"
  5. @remove-tag="removeTag" >
  6. <el-option v-for="option in materialList" :key="option.materialId"
  7. :label="option.materialName"
  8. :value="option.materialId" :disabled="isDisabled(option.materialId)">
  9. </el-option>
  10. </el-select>
  11. </el-form-item>

4、是否为默认值,true则禁用

  1. isDisabled(val) {
  2. return this.clone_material_ids.includes(val)
  3. },

5、默认值不可删除,我实现的思路是点击删除时,把默认值在加到默认值对应的位置上,就是可已在判断是默认选项后,拿到该值在备份数组中的下标,然后将该值,插入到你v-model绑定的数组中,注意是插入,不是覆盖。还可以加一个message进行提示

  1. removeTag(val) {
  2. if (this.clone_material_ids.includes(val)) {
  3. let defaultIndex = this.clone_material_ids.indexOf(val) // 获取默认值在数组中的下标
  4. this.updateForm.material_ids.splice(defaultIndex, 0, val) // 将要删除的值插入到默认值对应的下标位置
  5. // this.updateForm.material_ids.push(val)
  6. return false
  7. } else {
  8. return true
  9. }
  10. },

我一开始用的// this.updateForm.material_ids.push(val)这个,因为刚写没有思路,这个也可以实现默认值不可删除的效果,位置是不可控的。

以上是我个人在做实际项目中遇到的问题,我的实际开发经验也才3个月,可能或许实现的方式有些不好,希望能对大家有所帮助,当然,如果有大佬有更好的实现方式,希望可以交流指正,我目前只掌握了这种实现方式。

标签: ui javascript 前端

本文转载自: https://blog.csdn.net/qq_51846847/article/details/131081793
版权归原作者 起名时在学Aiifox 所有, 如有侵权,请联系我们删除。

“在element UI的下拉多选框里如何实现禁用默认值和不可删除默认值”的评论:

还没有评论