Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 477|回复: 0

vue开发购物车,解决全选单选问题

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-5-14 09:13:17 | 显示全部楼层 |阅读模式

    实现全选单选,在vue中无法通过this获取input中的checkbox的checked属性,但是可以通过vue对input的特殊方式v-model来实现对应数据的绑定,同样也可以通过这种方式实现购物车全选,单选的效果。

    大体内容如下:

    主要是通过checkbox以及v-if v-else实现内容的隐藏与显示

    当全选对应的checkbox为选中状态,在这里指的是:

     

    <th>全选<input type="checkbox" @click="handleChecked()" v-model="allChecked"/></th>

    注解:

    (1)allChecked:被封装成一个boolean类型的值,当选中时被设置成true,反之为对立面。

    (2)handleChecked():是一个函数,用来处理触发事件,同时实现对应的效果,如改变子的checkbox的状态。

    (3)一个比较巧妙的转换boolean数据对立面的方法:this.allChecked = !this.allChecked;

    (4)购物车总价显示与否的实现方法:通过v-if与v-else来判断,前提也是有一个boolean类型的值作为逻辑控制的标志;

    本方法的使用环境如下:

    1、data的封装

     

    1.  
      data() {
    2.  
      return {
    3.  
      //全选
    4.  
      allChecked:false,
    5.  
      //总计一栏是否显示的标记
    6.  
      displayMoney: false,
    7.  
      // 购物清单
    8.  
      list: [{
    9.  
      checked:false,
    10.  
      id: 1,
    11.  
      name: '发动机',
    12.  
      price: 180,
    13.  
      count: 1,
    14.  
      Stotal: 180
    15.  
      },
    16.  
      {
    17.  
      checked:false,
    18.  
      id: 2,
    19.  
      name: '燃油机',
    20.  
      price: 200,
    21.  
      count: 1,
    22.  
      Stotal: 200
    23.  
      },
    24.  
      {
    25.  
      checked:false,
    26.  
      id: 3,
    27.  
      name: '滤清',
    28.  
      price: 500,
    29.  
      count: 1,
    30.  
      Stotal: 500
    31.  
      }
    32.  
      ]
    33.  
      }
    34.  
       
    35.  
      },

     

    2、html部分

    1.  
      <div id="" v-if="list.length">
    2.  
      <table class="table_border">
    3.  
      <thead>
    4.  
      <tr class="tip">
    5.  
      <th>全选<input type="checkbox" @click="handleChecked()" v-model="allChecked"/></th>
    6.  
      <th>商品编号</th>
    7.  
      <th>商品名称</th>
    8.  
      <th>商品单价</th>
    9.  
      <th>购买数量</th>
    10.  
      <th>小计</th>
    11.  
      <th>操作</th>
    12.  
      </tr>
    13.  
      </thead>
    14.  
      <tbody>
    15.  
      <tr v-for="(item,index) in list">
    16.  
      <td><input type="checkbox" v-model="item.checked" name="all"/></td>
    17.  
      <td>{{ index + 1}}</td>
    18.  
      <td>{{ item.name }}</td>
    19.  
      <td>¥{{ item.price }}</td>
    20.  
      <td>
    21.  
      <button @click="handleReduce(index)" :disabled="item.count===1">-</button>
    22.  
      <input type="text" v-model="item.count" readonly="readonly" />
    23.  
      <button @click="handleAdd(index)">+</button>
    24.  
      </td>
    25.  
      <td>¥{{ item.Stotal }}</td>
    26.  
      <td>
    27.  
      <el-button @click="handleRemove(index)" type="danger" icon="el-icon-delete" circle></el-button>
    28.  
      </td>
    29.  
      </tr>
    30.  
      <tr>
    31.  
      <td colspan="4"></td>
    32.  
      <td colspan="3">
    33.  
      总价 :¥
    34.  
      <span v-if="displayMoney=true">{{totalPrice}}</span>
    35.  
      <span v-else="displayMoney=false">0</span>
    36.  
      </td>
    37.  
      </tr>
    38.  
      </tbody>
    39.  
      </table>
    40.  
      </div>
    41.  
      <div id="" v-else>
    42.  
      购物车为空
    43.  
      </div>

     

    3、核心方法部分

    1.  
      handleChecked: function(item) {
    2.  
      //全选
    3.  
      if(this.allChecked==false) {
    4.  
      for(var i = 0; i < this.list.length; i++) {
    5.  
      var item = this.list;
    6.  
      item.checked = true;
    7.  
      }
    8.  
      } else { //取消全选
    9.  
      for(var i = 0; i < this.list.length; i++) {
    10.  
      var item = this.list;
    11.  
      item.checked = false;
    12.  
      }
    13.  
      }
    14.  
      this.allChecked = !this.allChecked;
    15.  
      }

     

     

    完整代码见:https://download.csdn.net/download/colourfultiger/10516616

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2025-1-23 14:55 , Processed in 0.064858 second(s), 29 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表