老街一角 2021-11-12 14:05 采纳率: 68.8%
浏览 72
已结题

选中过的框怎么可以禁用

img

<template>
  <div style="margin: 50px;">
    <div v-for="(v,i) in arrList" :key="i">
      <el-checkbox-group v-model="arrList[i].label" >
        <el-checkbox v-for="(item, index) in data" :key="index" :label="item.label" @change="changeCheck($event,item.label,i)">
          <div style="margin-bottom: 10px;">{{ item.label }}</div>
        </el-checkbox>
      </el-checkbox-group>
    </div>
    <el-button @click="add">添加</el-button>
  </div>
</template>
<script>
  export default {
    data() {
      return {
        arrList:[
          {
            label:['不限']
          }
        ],
        data: [
          {label: '不限'},
          {label: '一级'},
          {label: '二级'}, 
          {label: '三级',}
        ],
      }
    },
    methods: {
      changeCheck(e,val,ind) {
        if(e) {
          if(val === '不限') {
            this.arrList[ind].label = ['不限'];
          }else {
            const index = this.arrList[ind].label.findIndex(item => item === '不限');
            if(index > -1) {
              this.arrList[ind].label.splice(index,1);
            }
          }
          if(this.arrList[ind].label.length>1) {
          this.arrList[ind].label.shift()
        }
        }
      },
      add(){
        let obj = {label:[ '不限']}
        this.arrList.push(obj)
      }
    }
  }
</script> 


  • 写回答

3条回答 默认 最新

  • 凉瓜拌面 2021-11-12 16:07
    关注
    
    <template>
      <div style="margin: 50px;">
        <div v-for="(v,i) in arrList" :key="i">
          <el-checkbox-group v-model="arrList[i]">
            <el-checkbox
              v-for="(item) in data"
              :key="item.id"
              :label="item.id"
              :disabled="computedDisable(item.id,i)"
              @change="changeCheck(item.id,i)"
            >
              <div style="margin-bottom: 10px;">{{ item.label }}</div>
            </el-checkbox>
          </el-checkbox-group>
        </div>
        <el-button @click="add">添加</el-button>
      </div>
    </template>
    <script>
    
    export default {
      data() {
        return {
          arrList: [
            [0]
          ],
          data: [
            { label: '不限' },
            { label: '一级' },
            { label: '二级' },
            { label: '三级' }
          ]
        }
      },
      created() {
        this.data = this.data.map((e, i) => {
          return { ...e, ...{
            disable: false,
            id: i
          }}
        })
      },
      methods: {
        computedDisable(id, i) {
          if (this.arrList[i].includes(id)) {
            return false
          }
          return !!this.arrList.flat().includes(id)
        },
        add() {
          this.arrList.push([])
        }
      }
    }
    </script>
    
    
    
    
    

    个人习惯不喜欢用中文做id,可以根据你需要改动

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 11月20日
  • 已采纳回答 11月12日
  • 创建了问题 11月12日

悬赏问题

  • ¥20 蓝牙耳机怎么查看日志
  • ¥15 Fluent齿轮搅油
  • ¥15 八爪鱼爬数据为什么自己停了
  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏