mintui全選反選


 vue復選框使用方法

  選中的值會存入v-model綁定的數組中

全選反選

1、當全選按鈕選上時,將arrList所有的value值放入 checkedList

2、當所有選項都選中時,全選按鈕也自動被選中,有一個沒被選中時,全選按鈕自動取消選中

 

以下為小demo的完整代碼

    <div class="pdt25">
            <div>
                <div class="item" v-for="item in arrList" :key='item.orderNo'>
                    <label class="mint-checklist-label">
                        <span class="mint-checkbox">
                            <input type="checkbox" class="mint-checkbox-input" :value='item.orderNo' v-model='checkedList' @change="selected(item)">
                            <span class="mint-checkbox-core"></span>
                        </span>
                    </label>
                    <div class="info">
                        <div class="title">{{item.title}}</div>
                        <div class="price">{{item.price}} 元</div>
                    </div>
                    
                </div>

            </div>
        </div>
        <div class="bottom">
            <label class="mint-checklist-label">
                <span class="mint-checkbox" >
                    <input type="checkbox" class="mint-checkbox-input" vlaue='all' v-model='checkedAll' @change='changeState'>
                    <span class="mint-checkbox-core"></span>
                </span>
                <span class="mint-checkbox-label">全選</span>
            </label>
            <div class="total-money">合計:{{totalMoney}}元</div>
        </div> 
  data(){
        return {
            totalMoney:0,
            checkedAll:false,
            checkedList:[],
            arrList:[
                {orderNo:'1', title:'小熊杯子350ml', price:100},
                {orderNo:'2', title:'小兔杯子350ml', price:100},
                {orderNo:'3', title:'斑馬杯子350ml', price:100},
                {orderNo:'4', title:'玻璃杯子350ml', price:100}
            ]
        }
    },
    methods:{
        changeState(){
            this.checkedList=[]
            this.totalMoney=0
            if(this.checkedAll==true){
                this.arrList.forEach( item => this.checkedList.push(item.orderNo))
                this.arrList.forEach(item => this.totalMoney+=item.price)
            }
            else{
                this.totalMoney=0
            }
            
        },
        selected(item){
            var a=this.checkedList.some(arr => {
                return arr==item.orderNo
            })
            if(a){
                this.totalMoney+=item.price
            }else{
                this.totalMoney-=item.price
            }
            
        }
    },
    watch:{
        checkedList:{
            handler(){
                if(this.checkedList.length==this.arrList.length){
                    this.checkedAll=true
                }else{
                    this.checkedAll=false
                }
            },
            deep:true
        }
    }

 

      

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM