亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

elementUI動態(tài)表單?+?el-select?按要求禁用問題

 更新時間:2022年10月22日 09:14:32   作者:_早睡身體好  
這篇文章主要介紹了elementUI動態(tài)表單?+?el-select?按要求禁用問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

項目通過 vue+elementUI 實現(xiàn)

近期開發(fā)過程中遇到一個需求,對于從事兩年的“小白”來說,確實費了點腦子,才發(fā)現(xiàn),好像是自己一開始想太多了,各種情況設(shè)想了一溜夠,發(fā)現(xiàn)只要反過來想就OK了 ╮(╯▽╰)╭

需求大概是這樣的:

在動態(tài)增減的表單項中,有一個下拉菜單,要求每選擇一項,就把選中過的那一個選項禁用(簡單來說就是,已經(jīng)選過的就不能再選了),且增加的條數(shù)不能超過下拉菜單中的選項數(shù)量

直接上圖吧(label不重要,主要看效果。。。)

演示圖

先實現(xiàn)最簡單的:限制新增數(shù)量

判斷已新增的數(shù)量是否小于下拉菜單中選項的數(shù)量

如果小于就新增,否則可以提示一些信息(這里就忽略不寫了)

// 新增按鈕綁定的 的方法
addType () {
  if (this.otherForm.other.length < this.typeList.length) {
    this.otherForm.other.push({
      type: '',
      key: Date.now()
    })
  }
}

下拉菜單已選中的選項 禁用

邏輯很簡單,當下拉菜單 change 時,先把所有下拉菜單選項的 disabled 賦值為 false(這里用到排他思想,每次change 都先不禁用,選了哪個禁用哪個),遍歷存儲表單數(shù)據(jù)的數(shù)組,在下拉菜單的 list 中找到對應的當前被選中的項,將該項的 disabled 設(shè)為 true(簡單來說就是 現(xiàn)在都有哪項被選擇了 就禁用它 )

changeType (index, Id) {
  this.typeList.forEach(v => {
    v.disabled = false
    for (var i = 0; i < this.otherForm.other.length; i++) {
      if (this.otherForm.other[i].type === v.Id) {
        v.disabled = true
      }
    }
  })
}

移除后要把移除的那條選中項的disabled 設(shè)為false

// 移除按鈕 綁定事件
removeType (item) {
  var index = this.otherForm.other.indexOf(item)
  if (index !== -1) {
    this.otherForm.other.splice(index, 1)
  }
  // 在下拉菜單數(shù)據(jù)中找到移除的那條的選中項 賦值為false
  this.typeList.forEach(v => {
    if (v.Id === item.type && v.disabled) {
      v.disabled = false
    }
  })
}

完整代碼

<template>
  <div>
    <el-form :model="otherForm" ref="otherForm" label-width="100px">
      <el-form-item
        v-for="(other, index) in otherForm.other"
        :label="'類型' + index"
        :key="index"
        :prop="'other.' + index + '.type'">
        <el-select v-model="other.type" placeholder="請選擇" @change="changeType(index, other.type)">
          <el-option
            v-for="item in typeList"
            :key="item.Id"
            :label="item.label"
            :value="item.Id"
            :disabled="item.disabled">
          </el-option>
        </el-select>
        <el-button @click.prevent="removeType(other)">刪除</el-button>
      </el-form-item>
      <el-form-item>
        <el-button @click="addType">新增</el-button>
      </el-form-item>
    </el-form>
  </div>
</template>
<script>
export default {
  data () {
    return {
      otherForm: {
        other: [{
          type: ''
        }]
      },
      typeList: [{
        Id: 1,
        label: '報名費'
      }, {
        Id: 2,
        label: '飯費'
      }, {
        Id: 3,
        label: '餐費'
      }, {
        Id: 4,
        label: '書本費'
      }]
    }
  },
  methods: {
    // 刪除
    removeType (item) {
      var index = this.otherForm.other.indexOf(item)
      if (index !== -1) {
        this.otherForm.other.splice(index, 1)
      }
      this.typeList.forEach(v => {
        if (v.Id === item.type && v.disabled) {
          v.disabled = false
        }
      })
    },
    // 新增
    addType () {
      if (this.otherForm.other.length < this.typeList.length) {
        this.otherForm.other.push({
          type: '',
          key: Date.now()
        })
      }
    },
    changeType (index, Id) {
      this.typeList.forEach(v => {
        v.disabled = false
        for (var i = 0; i < this.otherForm.other.length; i++) {
          if (this.otherForm.other[i].type === v.Id) {
            v.disabled = true
          }
        }
      })
    }
  }
}
</script>

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue修改數(shù)據(jù)視圖更新原理學習

    vue修改數(shù)據(jù)視圖更新原理學習

    這篇文章主要為大家介紹了vue修改數(shù)據(jù)視圖更新原理學習,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Vue3+Spring Framework框架開發(fā)實戰(zhàn)

    Vue3+Spring Framework框架開發(fā)實戰(zhàn)

    這篇文章主要為大家介紹了Vue3+Spring Framework框架開發(fā)實戰(zhàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • 淺談vue生命周期共有幾個階段?分別是什么?

    淺談vue生命周期共有幾個階段?分別是什么?

    這篇文章主要介紹了淺談vue生命周期共有幾個階段?分別是什么?具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • Vue3?echarts組件化及使用hook進行resize方式

    Vue3?echarts組件化及使用hook進行resize方式

    這篇文章主要介紹了Vue3?echarts組件化及使用hook進行resize方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • vue子父組件通信的實現(xiàn)代碼

    vue子父組件通信的實現(xiàn)代碼

    這篇文章主要介紹了vue子父組件通信的實現(xiàn)代碼,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2017-07-07
  • vue-router?導航完成后獲取數(shù)據(jù)的實現(xiàn)方法

    vue-router?導航完成后獲取數(shù)據(jù)的實現(xiàn)方法

    這篇文章主要介紹了vue-router?導航完成后獲取數(shù)據(jù),通過使用生命周期的 created() 函數(shù),在組件創(chuàng)建完成后調(diào)用該方法,本文結(jié)合實例代碼給大家講解的非常詳細需要的朋友可以參考下
    2022-11-11
  • vue中三種調(diào)用接口的方法

    vue中三種調(diào)用接口的方法

    這篇文章主要介紹了vue中三種調(diào)用接口的方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 如何為Vue3提供一個可媲美Angular的ioc容器

    如何為Vue3提供一個可媲美Angular的ioc容器

    ue3因其出色的響應式系統(tǒng),以及便利的功能特性,完全勝任大型業(yè)務系統(tǒng)的開發(fā),這篇文章主要介紹了如何為Vue3提供一個可媲美Angular的ioc容器,需要的朋友可以參考下
    2024-08-08
  • 深入淺析Vue不同場景下組件間的數(shù)據(jù)交流

    深入淺析Vue不同場景下組件間的數(shù)據(jù)交流

    探通過本篇文章給大家探討不同場景下組件間的數(shù)據(jù)“交流”的Vue實現(xiàn)方法,感興趣的朋友一起看看吧
    2017-08-08
  • element中table高度自適應的實現(xiàn)

    element中table高度自適應的實現(xiàn)

    這篇文章主要介紹了element中table高度自適應的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-10-10

最新評論