欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue2 el-checkbox-group復(fù)選框無(wú)法選中問(wèn)題及解決

 更新時(shí)間:2024年05月28日 16:20:26   作者:小果子^_^  
這篇文章主要介紹了vue2 el-checkbox-group復(fù)選框無(wú)法選中問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue2 el-checkbox-group 復(fù)選框無(wú)法選中

原代碼

<template slot-scope="scope">
  <el-checkbox v-model="scope.row.bitian">必填</el-checkbox>
</template>

if (this.allTemplateList && this.allTemplateList.length > 0) {
  this.allTemplateList.forEach(template => {
    template.bitian = false;
    template.number = '';
    template.shangchuandatas = [];
    template.wenjiandaxiao = '';
  })
},

修改后

在遍歷 this.allTemplateList 時(shí),使用 Vue.set 或 this.$set 來(lái)確保新添加的屬性是響應(yīng)式的

if (this.allTemplateList && this.allTemplateList.length > 0) {  
  this.allTemplateList.forEach((template, index) => {  
    this.$set(this.allTemplateList, index, {  
      ...template,  
      bitian: false,  
      number: '',  
      shangchuandatas: [],  
      wenjiandaxiao: '',  
    });  
  });  
}

多個(gè)el-checkbox-group復(fù)選框組 選項(xiàng)互斥

需求

多個(gè)el-checkbox-group復(fù)選框組 , 組與組之間的選項(xiàng)是互斥的效果

效果

在這里插入圖片描述

代碼實(shí)現(xiàn)(方法一)

  • template
<template>
  <div class="page">
    <el-checkbox-group
      v-for="(item, index) in list"
      v-model="item.checked"
      :key="index"
      @change="checkboxChange"
    >
      <el-checkbox
        v-for="(jitem, jindex) in item.checkData"
        :label="jitem.label"
        :key="jindex"
        :disabled="jitem.disabled"
        >{{ jitem.name }}</el-checkbox
      >
    </el-checkbox-group>
  </div>
</template>
  • script
<script>
export default {
  name: 'xxx',
  data() {
    return {
      list: [
        {
          checked: [], // 選中值
          checkData: [
            // 復(fù)選框
            { label: 'name1', name: '名稱(chēng)1', disabled: false },
            { label: 'name2', name: '名稱(chēng)2', disabled: false },
            { label: 'name3', name: '名稱(chēng)3', disabled: false }
          ]
        },
        {
          checked: [],
          checkData: [
            { label: 'name1', name: '名稱(chēng)1', disabled: false },
            { label: 'name4', name: '名稱(chēng)4', disabled: false },
            { label: 'name3', name: '名稱(chēng)3', disabled: false }
          ]
        },
        {
          checked: [],
          checkData: [
            { label: 'name1', name: '名稱(chēng)1', disabled: false },
            { label: 'name4', name: '名稱(chēng)4', disabled: false },
            { label: 'name3', name: '名稱(chēng)3', disabled: false }
          ]
        },
        {
          checked: [],
          checkData: [
            { label: 'name5', name: '名稱(chēng)5', disabled: false },
            { label: 'name1', name: '名稱(chēng)1', disabled: false },
            { label: 'name3', name: '名稱(chēng)3', disabled: false }
          ]
        }
      ]
    }
  },
  methods: {
    /**
     * @description 復(fù)選框change事件
     * @param {array} val 復(fù)選框值
     * @param {number} i 索引
     * @return {void} Do not return anything
     */
    checkboxChange() {
      let checkedAll = []// 存儲(chǔ)所有的選中值
      this.list.forEach(item => {
        // 初始化數(shù)據(jù),復(fù)選框都可選
        item.checkData.forEach(jitem => {
          jitem.disabled = false
        })
        // 將選中的數(shù)據(jù)存儲(chǔ)arr中
        item.checked.forEach(kitem => {
          checkedAll.push(kitem)
        })
      })
      // 去重
      checkedAll = Array.from(new Set(checkedAll))
      // 互斥操作
      this.list.forEach(item => {
        item.checkData.forEach(jitem => {
          if (checkedAll.includes(jitem.label) && !item.checked.includes(jitem.label)) {
            // 當(dāng)復(fù)選框?qū)?yīng)數(shù)據(jù)存在arr中,不存在對(duì)應(yīng)的checked中時(shí),設(shè)為禁用狀態(tài)
            jitem.disabled = true
          }
        })
      })
    }
  }
}
</script>

代碼實(shí)現(xiàn)(方法二)

  • template
<template>
  <div class="page">
    <el-form>
      <el-form-item v-for="(item, index) in list" :label="'復(fù)選框組' + (index + 1)"  :key="index">
        <el-checkbox-group v-model="item.checked">
          <el-checkbox
            v-for="(jitem, jindex) in item.checkData"
            :label="jitem.label"
            :key="jindex"
            :disabled="setDisabledMuti(jitem, index)"
            >{{ jitem.name }}</el-checkbox>
        </el-checkbox-group>
      </el-form-item>
  </el-form>
  </div>
</template>
  • script
<script>
export default {
  name: 'xxx',
  data() {
    return {
      checkedAll: [],
      list: [
        {
          checked: ['name1'], // 選中值
          checkData: [
            // 復(fù)選框
            { label: 'name1', name: '名稱(chēng)1' },
            { label: 'name2', name: '名稱(chēng)2' },
            { label: 'name3', name: '名稱(chēng)3' }
          ]
        },
        {
          checked: ['name4'],
          checkData: [
            { label: 'name1', name: '名稱(chēng)1' },
            { label: 'name4', name: '名稱(chēng)4' },
            { label: 'name3', name: '名稱(chēng)3' }
          ]
        },
        {
          checked: ['name3'],
          checkData: [
            { label: 'name1', name: '名稱(chēng)1' },
            { label: 'name4', name: '名稱(chēng)4' },
            { label: 'name3', name: '名稱(chēng)3' }
          ]
        },
        {
          checked: ['name5'],
          checkData: [
            { label: 'name5', name: '名稱(chēng)5' },
            { label: 'name1', name: '名稱(chēng)1' },
            { label: 'name3', name: '名稱(chēng)3' }
          ]
        }
      ]
    }
  },
  //計(jì)算屬性
  computed: {
    setDisabledMuti() {
      return function(opt, index) {
        // 全部已選擇
        const tempArr = this.list.map(item => item.checked)
        // 先刪除自己的已選
        tempArr.splice(index, 1)
        // 轉(zhuǎn)為一維數(shù)組
        const selectedArr = tempArr.flat();
        // 其它的已選,禁用
        return selectedArr.includes(opt.label)
      }
    }
  }
}
</script>

總結(jié)

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

相關(guān)文章

  • vue3之聲明式和編程式導(dǎo)航詳解

    vue3之聲明式和編程式導(dǎo)航詳解

    這篇文章主要介紹了vue3之聲明式和編程式導(dǎo)航,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • vue新建項(xiàng)目并配置標(biāo)準(zhǔn)路由過(guò)程解析

    vue新建項(xiàng)目并配置標(biāo)準(zhǔn)路由過(guò)程解析

    這篇文章主要介紹了vue新建項(xiàng)目并配置標(biāo)準(zhǔn)路由過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-12-12
  • vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)的實(shí)例詳解(params/query)

    vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)的實(shí)例詳解(params/query)

    在使用`router.push`進(jìn)行路由跳轉(zhuǎn)到另一個(gè)組件時(shí),可以通過(guò)`params`或`query`來(lái)傳遞參數(shù),這篇文章主要介紹了vue?router進(jìn)行路由跳轉(zhuǎn)并攜帶參數(shù)(params/query),需要的朋友可以參考下
    2023-09-09
  • Vue子組件監(jiān)聽(tīng)父組件值的變化

    Vue子組件監(jiān)聽(tīng)父組件值的變化

    這篇文章主要介紹了Vue子組件監(jiān)聽(tīng)父組件值的變化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • 在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    在Vue中使用scoped屬性實(shí)現(xiàn)樣式隔離的原因解析

    scoped是Vue的一個(gè)特殊屬性,可以應(yīng)用于<style>標(biāo)簽中的樣式,這篇文章給大家介紹在Vue中,使用scoped屬性為什么可以實(shí)現(xiàn)樣式隔離,感興趣的朋友一起看看吧
    2023-12-12
  • Vue3使用Element?Plus實(shí)現(xiàn)列表界面的方法步驟

    Vue3使用Element?Plus實(shí)現(xiàn)列表界面的方法步驟

    寫(xiě)后臺(tái)管理的時(shí)候會(huì)有很多列表以及相應(yīng)的條件查詢(xún),下面這篇文章主要給大家介紹了關(guān)于Vue3使用Element?Plus實(shí)現(xiàn)列表界面的方法步驟,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-04-04
  • Vue中為什么不推薦用index做key詳解

    Vue中為什么不推薦用index做key詳解

    Vue中使用虛擬dom且根據(jù)diff算法進(jìn)行新舊DOM對(duì)比,從而更新真實(shí) dom,key是虛擬DOM對(duì)象的唯一標(biāo)識(shí),在diff算法中key起著極其重要的作用,下面這篇文章主要給大家介紹了關(guān)于Vue中為什么不推薦用index做key的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • vue3使用video.js播放m3u8格式視頻的操作指南

    vue3使用video.js播放m3u8格式視頻的操作指南

    有時(shí)候我們需要播放 m3u8 格式的視頻,或者實(shí)現(xiàn)視頻播放器更多定制化需求,HTML 的 video 元素?zé)o法實(shí)現(xiàn)這些需求,這時(shí)候可以考慮使用 Video.js,本文給大家介紹了vue3使用video.js播放m3u8格式視頻的操作指南,需要的朋友可以參考下
    2024-07-07
  • 使用Element-UI的el-tabs組件,瀏覽器卡住了的問(wèn)題及解決

    使用Element-UI的el-tabs組件,瀏覽器卡住了的問(wèn)題及解決

    這篇文章主要介紹了使用Element-UI的el-tabs組件,瀏覽器卡住了的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • Vue單頁(yè)式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例

    Vue單頁(yè)式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例

    本篇文章介紹了Vue單頁(yè)式應(yīng)用(Hash模式下)實(shí)現(xiàn)微信分享的實(shí)例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論