最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue中el-checkbox全選、反選、多選的實(shí)現(xiàn)

 更新時(shí)間:2023年05月16日 16:29:39   作者:粽子師兄  
這篇文章主要介紹了vue中el-checkbox全選、反選、多選的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue el-checkbox全選、反選、多選

描述:實(shí)現(xiàn)對(duì)一組數(shù)據(jù)進(jìn)行全選,反選、多選操作

  • 全選
handleCheckAllChange(val) {
  this.checkedCities = val ? cityOptions : [];
  this.isIndeterminate = false;
  this.checkInvert = false;
}
  • 反選
handleInvertCheckChange(val) {
  let cities = this.cities;
  let checkedCities = this.checkedCities;
  if (checkedCities.length === 0) {
    checkedCities = val ? cities : [];
  } else if (checkedCities.length === cities.length) {
    this.checkedCities = [];
    this.checkAll = false;
  } else {
    let list = cities.concat(checkedCities).filter((v, i, array) => {
      return array.indexOf(v) === array.lastIndexOf(v);
    });
    this.checkedCities = list;
  }
}
  • 多選
handleCheckedCitiesChange(value) {
  let checkedCount = value.length;
  this.checkAll = checkedCount === this.cities.length;
  this.isIndeterminate =
    checkedCount > 0 && checkedCount < this.cities.length;
  this.checkInvert = false;
}

完整代碼

<template>
  <div>
    <el-checkbox
      v-model="checkAll"
      @change="handleCheckAllChange"
      :indeterminate="isIndeterminate"
      >全選</el-checkbox
    >
    <el-checkbox v-model="checkInvert" @change="handleInvertCheckChange"
      >反選</el-checkbox
    >
    <el-checkbox-group
      v-model="checkedCities"
      @change="handleCheckedCitiesChange"
    >
      <el-checkbox v-for="city in cities" :label="city" :key="city">{{
        city
      }}</el-checkbox>
    </el-checkbox-group>
  </div>
</template>
<script>
const cityOptions = ["上海", "北京", "廣州", "深圳"];
export default {
  data() {
    return {
      checkAll: false,
      checkInvert: false,
      checkedCities: ["上海", "北京"],
      cities: cityOptions,
      isIndeterminate: true,
    };
  },
  methods: {
    // 全選
    handleCheckAllChange(val) {
      this.checkedCities = val ? cityOptions : [];
      this.isIndeterminate = false;
      this.checkInvert = false;
    },
    // 反選
    handleInvertCheckChange(val) {
      let cities = this.cities;
      let checkedCities = this.checkedCities;
      if (checkedCities.length === 0) {
        checkedCities = val ? cities : [];
      } else if (checkedCities.length === cities.length) {
        this.checkedCities = [];
        this.checkAll = false;
      } else {
        let list = cities.concat(checkedCities).filter((v, i, array) => {
          return array.indexOf(v) === array.lastIndexOf(v);
        });
        this.checkedCities = list;
      }
    },
    // 多選
    handleCheckedCitiesChange(value) {
      let checkedCount = value.length;
      this.checkAll = checkedCount === this.cities.length;
      this.isIndeterminate =
        checkedCount > 0 && checkedCount < this.cities.length;
      this.checkInvert = false;
    },
  },
};
</script>
<style>
</style>

checkbox多選框,indeterminate 狀態(tài)

舉個(gè)例子。比如選擇星期。一周七天

2種方法。思密達(dá)。。。。第一種帶局限性。笨辦法,也發(fā)出來(lái)大家看看(推薦使用第二種)

這是方式的值是組件自帶的值方式

const cityOptions = ['周一', '周二', '周三', '周四','周五','周六','周天']
<template>
? <div>
? ? <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全選</el-checkbox>
? ? <div style="margin: 15px 0;"></div>
? ? <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
? ? ? <el-checkbox v-for="city in cities" :label="city" :key="city">{{city}}</el-checkbox>
? ? </el-checkbox-group>
? </div>
</template>
<script>
? const cityOptions = ['周一', '周二', '周三', '周四','周五','周六','周天']
? export default {
? ? data() {
? ? ? return {
? ? ? ? checkAll: false,
? ? ? ? checkedCities: [],
? ? ? ? cities: cityOptions,
? ? ? ? isIndeterminate: true,
? ? ? ? arr:[]
? ? ? }
? ? },
? ? methods: {
? ? ? handleCheckAllChange(val) {
? ? ? ? let tempArr = []
? ? ? ? this.checkedCities = val ? cityOptions : []
? ? ? ? this.isIndeterminate = false
? ? ? ? // console.log(this.checkedCities)
? ? ? ? // console.log(val)
? ? ? ? if (this.checkedCities != []) {
? ? ? ? ? ? ? if(val == true){
? ? ? ? ? ? ? ? tempArr = [1,2,3,4,5,6,0]
? ? ? ? ? ? ? ? this.arr = tempArr
? ? ? ? ? ? ? }else if(val==false){
? ? ? ? ? ? ? ? tempArr = []
? ? ? ? ? ? ? ? this.arr = tempArr
? ? ? ? ? }
? ? ? ? }
? ? ? ? console.log(this.arr)
? ? ? },
? ? ? handleCheckedCitiesChange(value) {
? ? ? ? let checkedCount = value.length;
? ? ? ? this.checkAll = checkedCount === this.cities.length;
? ? ? ? this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
? ? ? ? var tempArr = []
? ? ? ? for(let i=0;i<value.length;i++){
? ? ? ? ? if(value[i] === '周一') {
? ? ? ? ? ? tempArr.push(1)
? ? ? ? ? }else if(value[i] === '周二'){
? ? ? ? ? ? tempArr.push(2)
? ? ? ? ? }else if(value[i] === '周三'){
? ? ? ? ? ? tempArr.push(3)
? ? ? ? ? }else if(value[i] === '周四'){
? ? ? ? ? ? tempArr.push(4)
? ? ? ? ? }else if(value[i] === '周五'){
? ? ? ? ? ? tempArr.push(5)
? ? ? ? ? }else if(value[i] === '周六'){
? ? ? ? ? ? tempArr.push(6)
? ? ? ? ? }else if(value[i] === '周天'){
? ? ? ? ? ? tempArr.push(0)
? ? ? ? ? }
? ? ? ? }
? ? ? ? this.arr = tempArr
? ? ? ? console.log(this.arr)
? ? ? }
? ? }
? }
</script>
<style scoped>
</style>

之后UP想了一下。不對(duì)。后臺(tái)反過(guò)來(lái)的數(shù)組不應(yīng)該是這種。大部分都應(yīng)該是obj的形式

于是乎。

const cityOptions = [{a:'周一',b:1}, {a:'周二',b:2}, {a:'周三',b:3},{a:'周四',b:4},{a:'周五',b:5},{a:'周六',b:6},{a:'周天',b:7}];

對(duì)吧這種形式才對(duì)。說(shuō)不定可能有很多很多。萬(wàn)一叫你把一個(gè)月都列出來(lái)也說(shuō)不定。

繼續(xù)上代碼

<template>
? ? <div style="height: 1000px">
? ? ? <el-checkbox :indeterminate="isIndeterminate" v-model="checkAll" @change="handleCheckAllChange">全選</el-checkbox>
? ? ? <div style="margin: 15px 0;"></div>
? ? ? <el-checkbox-group v-model="checkedCities" @change="handleCheckedCitiesChange">
? ? ? ? <el-checkbox v-for="city in cities" :label="city.b" :key="city.b">{{city.a}}</el-checkbox>
? ? ? </el-checkbox-group>
? ? </div>
</template>
<script>
? const cityOptions = [{a:'周一',b:1}, {a:'周二',b:2}, {a:'周三',b:3},{a:'周四',b:4},{a:'周五',b:5},{a:'周六',b:6},{a:'周天',b:7}];
? export default {
? ? name: "tourSpecialEdition",
? ? components: {},
? ? data(){
? ? ? return{
? ? ? ? checkAll: false,
? ? ? ? checkedCities: [],
? ? ? ? cities: cityOptions,
? ? ? ? isIndeterminate: false
? ? ? }
? ? },
? ? created() {},
? ? mounted() {},
? ? methods: {
? ? ? handleCheckAllChange(val) {
? ? ? ? const arr = val ? cityOptions : [];
? ? ? ? this.checkedCities = [];
? ? ? ? arr.map(item => {
? ? ? ? ? this.checkedCities.push(item.b);
? ? ? ? ? console.log(this.checkedCities.sort())
? ? ? ? });
? ? ? ? this.isIndeterminate = false;
? ? ? },
? ? ? handleCheckedCitiesChange(value) {
? ? ? ? let arrTime = value
? ? ? ? this.checkedCities = arrTime
? ? ? ? console.log(this.checkedCities.sort())
? ? ? ? let checkedCount = value.length;
? ? ? ? this.checkAll = checkedCount === this.cities.length;
? ? ? ? this.isIndeterminate = checkedCount > 0 && checkedCount < this.cities.length;
? ? ? }
? ? }
? }
</script>
<style scoped>
</style>

總結(jié)

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

相關(guān)文章

  • 在?Vue?中控制表單輸入方法詳解

    在?Vue?中控制表單輸入方法詳解

    這篇文章主要介紹了在?Vue?中控制表單輸入方法詳解的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • vue3中v-model的用法詳解

    vue3中v-model的用法詳解

    vue 提供了很多自定義指令,大大方便了我們的開(kāi)發(fā),其中最常用的也就是 v-model,他可以在組件上使用以實(shí)現(xiàn)雙向綁定。它可以綁定多種數(shù)據(jù)結(jié)構(gòu), 今天總結(jié)一下用法
    2023-04-04
  • 解決echarts中橫坐標(biāo)值顯示不全(自動(dòng)隱藏)問(wèn)題

    解決echarts中橫坐標(biāo)值顯示不全(自動(dòng)隱藏)問(wèn)題

    這篇文章主要介紹了解決echarts中橫坐標(biāo)值顯示不全(自動(dòng)隱藏)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • Vue響應(yīng)式系統(tǒng)的原理詳解

    Vue響應(yīng)式系統(tǒng)的原理詳解

    這篇文章主要為大家介紹了Vue響應(yīng)式系統(tǒng)的原理,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例

    Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例

    這篇文章主要介紹了Vue $attrs & inheritAttr實(shí)現(xiàn)button禁用效果案例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • vue3繼承并擴(kuò)展三方組件完成二次封裝的示例詳解

    vue3繼承并擴(kuò)展三方組件完成二次封裝的示例詳解

    這篇文章主要介紹了vue3繼承并擴(kuò)展三方組件完成二次封裝,文章使用naiveui的Input組件進(jìn)行舉例,elementPlus或者其他組件庫(kù)同理,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-03-03
  • vant之van-list的使用及踩坑記錄

    vant之van-list的使用及踩坑記錄

    這篇文章主要介紹了vant之van-list的使用及踩坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-04-04
  • vue router2.0二級(jí)路由的簡(jiǎn)單使用

    vue router2.0二級(jí)路由的簡(jiǎn)單使用

    這篇文章主要為大家詳細(xì)介紹了vue router2.0二級(jí)路由的簡(jiǎn)單使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • Vue學(xué)習(xí)之路之登錄注冊(cè)實(shí)例代碼

    Vue學(xué)習(xí)之路之登錄注冊(cè)實(shí)例代碼

    本篇文章主要介紹了Vue學(xué)習(xí)之路之登錄注冊(cè)實(shí)例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟

    Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟

    在大部分實(shí)際場(chǎng)景中,我們都可以構(gòu)建單頁(yè)應(yīng)用來(lái)進(jìn)行項(xiàng)目的開(kāi)發(fā)和迭代,然而對(duì)于項(xiàng)目復(fù)雜度過(guò)高或者頁(yè)面模塊之間差異化較大的項(xiàng)目,我們可以選擇構(gòu)建多頁(yè)應(yīng)用來(lái)實(shí)現(xiàn),那么什么是多頁(yè)應(yīng)用,本文就給大家介紹了Vue使用pages構(gòu)建多頁(yè)應(yīng)用的實(shí)現(xiàn)步驟
    2024-12-12

最新評(píng)論

宜黄县| 鄢陵县| 开封市| 溆浦县| 九江市| 舟山市| 汽车| 乳源| 白玉县| 丹寨县| 涟水县| 威宁| 恩施市| 天津市| 邹城市| 名山县| 佳木斯市| 茌平县| 永宁县| 木兰县| 随州市| 泾阳县| 阿荣旗| 南召县| 大邑县| 金昌市| 泌阳县| 肇庆市| 祥云县| 澎湖县| 锦州市| 德安县| 苍山县| 星子县| 湖北省| 栖霞市| 常德市| 广州市| 方城县| 德惠市| 秀山|