实现全选单选,在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[i];
  6.  
    item.checked = true;
  7.  
    }
  8.  
    } else { //取消全选
  9.  
    for(var i = 0; i < this.list.length; i++) {
  10.  
    var item = this.list[i];
  11.  
    item.checked = false;
  12.  
    }
  13.  
    }
  14.  
    this.allChecked = !this.allChecked;
  15.  
    }

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

vue开发购物车,解决全选单选问题的更多相关文章

  1. vue+vant 购物车的全选和反选

    https://blog.csdn.net/wjswangjinsheng/article/details/91392694

  2. Flutter实战视频-移动电商-60.购物车_全选按钮的交互效果制作

    60.购物车_全选按钮的交互效果制作 主要做全选和复选框的这两个功能 provide/cart.dart 业务逻辑写到provide里面 先持久化取出来字符串,把字符串编程list.循环list ca ...

  3. VUE实现简单的全选/全不选

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  4. vue+vant实现购物车的全选和反选业务,带你研究购物车的那些细节!

    前言 喜欢购物的小伙伴看过来,你们期待已久的购物车来啦!相信小伙伴逛淘宝时最擅长的就是加入购物车了,那购物车是如何实现商品全选反选的呢?今天就带你们研究购物车的源码,以vue+vant为例. 正文 首 ...

  5. jquery-防多店铺购物车结算全选,单选,及删除,价格计算

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...

  6. Android中购物车的全选、反选、问题和计算价格

    此Demo主要解决的是购物车中的全选,反选计算价格和选中的条目个数的问题,当选中几条时,点击反选,会把当先选中的变为不选中,把不选中的变为选中.点击全选会全部选中,再次点击时,变为全部不选中. //- ...

  7. vue中的checkbox全选和反选

    前几天有个博客园的朋友问小颖,小颖之前写的vue2.0在table中实现全选和反选  .Vue.js实现checkbox的全选和反选,为什么他将里面的js复制下来,但是实现不了全选和反选.小颖当时看他 ...

  8. vue的el-select标签全选以及出现需要有禁用选项

    首先说一下遇到这种问题的解决思路吧,很简单先去https://element.eleme.cn/#/zh-CN 这个官网上找到对应的需求,然后就是拼接数据的问题. 以下是全选的例子: <el-s ...

  9. 邮箱性质--全选单选的操作和传值 用属性的name传值

    封装类 using System; using System.Collections.Generic; using System.Web; /// <summary> /// Ha 的摘要 ...

随机推荐

  1. ES6的一些说明

    一 ES6 即 ECMAScript6 ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了.它的目标,是使得JavaScript语言可 ...

  2. Lumia 1020 诞生:诺基亚拍照技术的一次狂欢

    它在手机发展史上留下一长串坚实的脚印,拥趸遍及世界.它从巅峰滑落,但从未放弃向过去致敬的机会. 2002 年,作为世界上第一款内置摄像头拍照手机,诺基亚 7650 的横空出世将手机行业硬生生推上一个新 ...

  3. 频繁项挖掘算法Apriori和FGrowth

    一:背景介绍 最近在公司用spark的平台做了一个购物车的推荐,用到的算法主要是FGrowth算法,它是Apriori算法的升级版,算法的主要目的是找出频繁进行一起购买的商品.本文主要介绍两个算法的背 ...

  4. Java Enum枚举的用法(转)

    说明:Java的枚举比dotnet的枚举好用,至少支持的方式有很多. 用法一:常量 在JDK1.5 之前,我们定义常量都是: public static fianl.... .现在好了,有了枚举,可以 ...

  5. VMware Workstation 虚拟机设置连接U盘

    首先确保主机有开启"VMware USB Arbitration Service"服务,而且在执行中. 如图:(我的系统是win8.1 ) 在VMware Workstation虚 ...

  6. minimum-depth-of-binary-tree——二叉树遍历、链表、广度优先

    Given a binary tree, find its minimum depth.The minimum depth is the number of nodes along the short ...

  7. 使用word2010写文章发布到blog

    参考文档: http://www.cnblogs.com/liuxianan/archive/2013/04/13/3018732.html 使用Windows Live Writer 2012和Of ...

  8. ubuntu 的权限和目录

    / : 根目录 /bin 和 /sbin中放置的是可执行文件   /etc 里面放的是配置文件    /boot 引导 /mnt  是挂载目录 /home   主目录 /dev  设备 /usr li ...

  9. mongodb+php通过_id查询

    在php中通过_id 在mongodb中查找特定记录: <?php $conn=new Mongo("127.0.0.1:27017"); #连接指定端口远程主机 $db=$ ...

  10. adb的那点小事——360电视助手实现研究

    欢迎转载,转载请注明:http://blog.csdn.net/zhgxhuaa 1.   前言 1.1.  行业背景简单介绍 当下,智能家居与智能穿戴设备无疑是继智能手机后两个最热门的方向.而智能家 ...