账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    vue vant checkbox
    27
    0
    <template>
        <div class="car">
            <h3 style="text-align: center;">购物车</h3>
           <ul>
              <li v-for="(item,index) in carts" :key="index">
                <div class="carProList">
                   <div class="carProSelect carProInfo">
                         <van-checkbox v-model="item.danxuan" @change="danxuanChecked(item.danxuan)"/>
                   </div>
                   <div class="carProImg carProInfo">
                         <img :src="item.proImg"/>
                   </div>
                   <div class="cartInformation carProInfo">
                         <div>
                             {{item.proName}}
                         </div>
                         <div>
                             {{item.proPrice}}
                         </div>
                         <div>
                             <van-stepper v-model="item.homeValue" />
                         </div>
                   </div>
                   <div class="deleteCarPro carProInfo">
                         1
                   </div>
                </div>
              </li>
           </ul>
            <van-submit-bar
                  :price="sum()"
                  button-text="提交订单"
                >
                  <van-checkbox @change="toggleCheckedAll" v-model="checkedAll">全选</van-checkbox>
                </van-submit-bar>
        </div>
    </template>
    
    <script>
     import { mapState } from 'vuex'
     import { Checkbox, CheckboxGroup } from 'vant';
     import { Card } from 'vant';
     import { Stepper } from 'vant';
     import { SubmitBar } from 'vant';
     export default{
        data(){
         return{
             checkedAll:true,
             partCheck:false
         }
       },
       components:{
         [Checkbox.name]:Checkbox,
         [CheckboxGroup.name]:CheckboxGroup,
         [Card.name]:Card,
         [Stepper.name]:Stepper,
         [SubmitBar.name]:SubmitBar
       },
       computed:{
         ...mapState([
           "carts"
         ])
       },
       methods:{
         toggleCheckedAll(val){
           if(!val){
                this.carts.forEach((item)=>{
                  item.danxuan = false  
                })
                this.checkedAll = false
           }else{
                this.carts.forEach((item)=>{
                  item.danxuan = true  
                })
                this.checkedAll = true
           }
         },
         danxuanChecked(cart){
           if(!cart){
             this.checkedAll = false
           }
           var isExitCheckedNo = this.carts.every(item=>{
             return item.danxuan === true     
           });
           console.log(isExitCheckedNo);
           
           if(isExitCheckedNo){
             this.checkedAll = true    
           }else{
               this.checkedAll = false
           }
         },
         sum(){
           var totalSum = 0;
           this.carts.forEach((item)=>{
             if(item.danxuan){
               totalSum+=item.proPrice*item.homeValue*100    
             }
           })
           return totalSum
         }
       }
     }
    </script>

    我是用vue+vantui搭建的一个购物车,我想实现全选和全不选,以及单选的时候判断是否全部选中和部分选中,但是vant它的触发事件是change,也就是我在将列表中的其中一个checkbox设置为false时,我的本意是只让全选变为checked =false,可是这个时候全选按钮change了,变成false了,然后会执行让所有单选变成false(因为我在点击全选按钮时如果选中,所有列表全选中,如果全选按钮不选中,则所有的列表不选中)。 大神帮忙分析下,

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 狼籍 普通会员 1楼
      502 Bad Gateway

      502 Bad Gateway


      nginx
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部