Vue实现购物车的全选、单选、显示商品价格代码实例


Posted in Javascript onMay 06, 2019

今天中午废了一会时间,总算把项目中的购物车的单选、全选、以及实现数据的动态显示做出来了,给小白分享一下我个人一个解决办法:

购物车的基本页面如下:

Vue实现购物车的全选、单选、显示商品价格代码实例

先说实现的总体思路

  1. 1.给table表中表头th加一个 checkbox,设这两个事件:@click=”checkAll” v-model=”checkall”;
  2. 2.给对应的tr加一个 checkbox 绑定一个事件 v-model=”checked”,checked设为数组,专门放商品Id;
  3. 3.由于checkall默认为false,当我勾选全选框时,将checkall设为true,往checked数组中遍历添加所有商品ID,每列中的checkbox自动选中,此时已经实现全选的取消\选中了,当单选时,应该将checkAll的状态设为false,这样就能实现单选多选了;
  4. 4.最后一步就是对数据的动态显示了,data中绑定两个值,分别是price和count,当我勾选某一列时,通过@click=”xx(price,count,productId)”传值放到页面上;
  5. 5.单选的选中与取消可以通过判断商品id是否存在在数组中,即indexOf(productId)==-1,如果数组中是存在此商品ID,则点击单选框时应减少价格,反之增加。

这是我个人的思路,具体代码实现如下:

html:

<div id="a" class="container">
        <table class="table table-hover" v-if="list.length">
          <thead>
            <tr>
              <th><input type="checkbox" id="box" @click="checkAll" v-model="checkall" /></th>
              <th>图片</th>
              <th>商品名</th>
              <th>数量</th>
              <th>单价</th>
              <th>总金额</th>
              <th>加入时间</th>
              <th>删除</th>
            </tr>
          </thead>

          <tbody>
            <tr v-for="(dateil,index) in list" :key="index">
              <td><input type="checkbox" class="checkbox" v-model="checked"  @click="select(dateil.detailId,dateil.detailProductprice,dateil.detailProductnum)" :value="dateil.detailId" /></td>
              <td><a @click="goShop(dateil.detailProductId)" style="cursor: pointer;"><img v-bind:src="web_server_static+dateil.product.productPhoto"></a></td>
              <td><a @click="goShop(dateil.detailProductId)" style="cursor: pointer;">{{dateil.product.productName}}</a></td>
              <td>{{dateil.detailProductnum}}</td>
              <td>{{dateil.detailProductprice}}</td>
              <td>{{dateil.detailProductprice*dateil.detailProductnum}}</td>
              <td>{{dateil.detailDatetime}}</td>
              <td>
                <button type="button" id="but" @click="del(dateil.detailId)" class="btn btn-danger">删除</button>
              </td>
            </tr>

          </tbody>

        </table>
        <div v-else style="font-size: 25px;text-align: center; margin-top: 300px;height: 100px;">购物车空空如也,请先去购买商品~</div>
        <div id="label_btn">
          <span><label>已选商品<a>{{count}}</a>件,共</a>¥{{price}}</a>元 数组{{checked}}</label>

          </span>
          <span><button type="button" id="btn-close" @click="jiesuan()" class="btn btn-danger">结算</button></span>
        </div>
        <!--结算按钮-->

      </div>

Vue中的数据应该这样写

var vue = new Vue({
        el: '#a',
        data: {
          list: [],
          checkall: false,
           checked: [],
           price:0,
           count:0,
        }

js:

checkAll: function() {
            /**
            *控制全选反选
            */
            var _this = this
            //true的时候是全选,false是不选
            if(this.checkall) {
              // 实现反选,按钮选中时 实现了反选,列表为空
              this.checked = []
              this.price=0;
              this.count=0;
            } else {
              // 实现全选
                this.price=0;
              this.count=0;
              this.checked = []
              this.list.forEach(function(dateil) {
                _this.price+=parseInt(dateil.detailProductprice);
                _this.count+=parseInt(dateil.detailProductnum);
                _this.checked.push(dateil.detailId)
              })
            }
            if(this.checked.length === this.list.length) {
              this.checkall = true
              // console.log(this.checkall)
              // console.log(this.checked)
            }
          }
/**
           * 当单选框选中时
           */
          checkAll: function() {

            var _this = this
            //true的时候是全选,false是不选
            if(this.checkall) {
              // 实现反选,按钮选中时 实现了反选,列表为空
              this.checked = []
              this.price=0;
              this.count=0;
            } else {
              // 实现全选
                this.price=0;
              this.count=0;
              this.checked = []
              this.list.forEach(function(dateil) {
                _this.price+=parseInt(dateil.detailProductprice);
                _this.count+=parseInt(dateil.detailProductnum);
                _this.checked.push(dateil.detailId)
              })
            }
            if(this.checked.length === this.list.length) {
              this.checkall = true
              // console.log(this.checkall)
              // console.log(this.checked)
            }
          }

这样一个购物车的全选、单选、与数据的显示就完成了。

以上所述是小编给大家介绍的Vue实现购物车的全选、单选、显示商品价格详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
利用javascript中的call实现继承
Jan 22 Javascript
javascript firefox 自动加载iframe 自动调整高宽示例
Aug 27 Javascript
简介JavaScript中search()方法的使用
Jun 06 Javascript
纯javascript实现图片延时加载方法
Aug 21 Javascript
json传值以及ajax接收详解
May 24 Javascript
jQuery实现的无限级下拉菜单功能示例
Sep 12 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
Aug 06 Javascript
Angular 开发学习之Angular CLI的安装使用
Dec 31 Javascript
微信小程序实现两边小中间大的轮播效果的示例代码
Dec 07 Javascript
20多个小事例带你重温ES10新特性(小结)
Sep 29 Javascript
js 压缩图片的示例(只缩小体积,不更改图片尺寸)
Oct 21 Javascript
JS不要再到处使用绝对等于运算符了
Apr 30 Javascript
JavaScript中关于base64的一些事
May 06 #Javascript
JavaScript中工厂函数与构造函数示例详解
May 06 #Javascript
微信小程序登录数据解密及状态维持实例详解
May 06 #Javascript
一文了解Vue中的nextTick
May 06 #Javascript
angular 服务随记小结
May 06 #Javascript
详解如何使用nvm管理Node.js多版本
May 06 #Javascript
关于AOP在JS中的实现与应用详解
May 06 #Javascript
You might like
深入浅析yii2-gii自定义模板的方法
2016/04/26 PHP
深入解析PHP中SESSION反序列化机制
2017/03/01 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
js随机颜色代码的多种实现方式
2013/04/23 Javascript
Jquery倒数计时按钮setTimeout的实例代码
2013/07/04 Javascript
探讨在JQuery和Js中,如何让ajax执行完后再继续往下执行
2013/07/09 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
Javascript中Array用法实例分析
2015/06/13 Javascript
animate 实现滑动切换效果【实例代码】
2016/05/05 Javascript
jQuery基于扩展实现的倒计时效果
2016/05/14 Javascript
BootStrap Table 设置height表头与内容无法对齐的问题
2016/12/28 Javascript
nodejs对express中next函数的一些理解
2017/09/08 NodeJs
JS验证码实现代码
2017/09/14 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
2020/10/30 Javascript
使用python检测主机存活端口及检查存活主机
2015/10/12 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
Python编程实现的简单Web服务器示例
2017/06/22 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
Python 取numpy数组的某几行某几列方法
2019/10/24 Python
用python求一重积分和二重积分的例子
2019/12/06 Python
Python函数的定义方式与函数参数问题实例分析
2019/12/26 Python
Python3 Tensorlfow:增加或者减小矩阵维度的实现
2020/05/22 Python
如何在mac下配置python虚拟环境
2020/07/06 Python
浅谈keras中Dropout在预测过程中是否仍要起作用
2020/07/09 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
英格兰足协官方商店:England Store
2019/07/12 全球购物
物流专业毕业生推荐信范文
2013/11/18 职场文书
万年牢教学反思
2014/02/15 职场文书
员工激励培训演讲稿
2014/09/16 职场文书
2014大学生党员评议个人总结
2014/09/22 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
简短的36句中秋节祝福信息语句
2019/09/09 职场文书
JavaScript+HTML实现学生信息管理系统
2021/04/20 Javascript
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python