vue2.0中vue-cli实现全选、单选计算总价格的实例代码


Posted in Javascript onJuly 18, 2017

由于工作的需要并鉴于网上的vue2.0中vue-cli实现全选、单选方案不合适,自己写了一个简单实用的。就短短的126行代码。

<template>

  <div>

    <table>

      <tr>

        <td><input type="checkbox" v-model="checkAll">全选({{checkedCount}})</td>

        <td>产品名称</td>

        <td>价格</td>

        <td>数量</td>

      </tr>

      <tr v-for="(item,$index) in lists">

        <td><span v-show="checkedCount===lists.length || item.checked===true">我被选中</span><input type="checkbox" :value="item.id" v-model="checked" @click="currClick(item,$index)"></td>

        <td>{{item.productName}}</td>

        <td>{{item.price}}</td>

        <td>{{item.count}}</td>

      </tr>

      <tr>

        总价:{{totalMoney}}

      </tr>

    </table>

  </div>

</template>

<script>

  export default{

    data() {

      return {

        checked:[],

        totalPrice:[],

        lists : [

          {

            productName:'产品1',

            price:'24',

            count:'3',

            id:1

          },

          {

            productName:'产品2',

            price:'25',

            count:'6',

            id:2

          },

          {

            productName:'产品3',

            price:'54',

            count:'7',

            id:3

          }

        ]

      }

    },

    computed:{

      totalMoney:function(item,index){

        let sum = 0;

        for(let i=0;i<this.totalPrice.length;i++){

          sum += this.totalPrice[i];

        };

        return sum;

      },

      checkAll: {

        get: function() {

          return this.checkedCount == this.lists.length;

        },

        set: function(value){

          var _this = this;

          if (value) {  

            this.totalPrice = [];

            this.checked = this.lists.map(function(item) {

              item.checked = true;

              let total = item.price*item.count;

              _this.totalPrice.push(total);

              return item.id

            })

          }else{

            this.checked = [];

            this.totalPrice=[];

            this.lists.forEach(function(item,index){

              item.checked = false;

            });

          }

        }

      },

      checkedCount: {

        get: function() {

          return this.checked.length;

        }

      }

    },

    methods:{

      currClick:function(item,index){

        var _this = this;

        if(typeof item.checked == 'undefined'){

          this.$set(item,'checked',true);

            let total = item.price*item.count;

            this.totalPrice.push(total);

            console.log(this.totalPrice);

        }else{

          item.checked = !item.checked;

          if(item.checked){

            this.totalPrice = [];

            this.lists.forEach(function(item,index){

              if(item.checked){

                let total = item.price*item.count;

                _this.totalPrice.push(total);

              }

            });

          }else{

            this.totalPrice = [];

            this.lists.forEach(function(item,index){

              if(item.checked){

                let total = item.price*item.count;

                _this.totalPrice.push(total);

              }

            });

          }

        }

      }

    }

  }

</script>

<style>

  tr td{

    width:200px;

    background: #eee;

    padding:10px 0;

  }

 

</style>

效果:

vue2.0中vue-cli实现全选、单选计算总价格的实例代码

vue2.0中vue-cli实现全选、单选计算总价格的实例代码

vue2.0中vue-cli实现全选、单选计算总价格的实例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript之可拖动的iframe效果代码
Aug 01 Javascript
javascript 类定义的4种方法
Sep 12 Javascript
javascript获得CheckBoxList选中的数量
Oct 27 Javascript
JS操作Cookie写入和读取实例代码
Oct 20 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
javascript内置对象操作详解
Feb 04 Javascript
jQuery validate验证插件使用详解
May 11 Javascript
jQuery树形插件jquery.simpleTree.js用法分析
Sep 05 Javascript
seajs学习教程之基础篇
Oct 20 Javascript
微信小程序自定义模态对话框实例详解
Aug 16 Javascript
js编写简单的聊天室功能
Aug 17 Javascript
Node.js API详解之 repl模块用法实例分析
May 25 Javascript
iscroll.js滚动加载实例详解
Jul 18 #Javascript
基于iScroll实现下拉刷新和上滑加载效果
Jul 18 #Javascript
jQuery remove()过滤被删除的元素(推荐)
Jul 18 #jQuery
H5基于iScroll实现下拉刷新和上拉加载更多
Jul 18 #Javascript
iscroll动态加载数据完美解决方法
Jul 18 #Javascript
Angular4学习笔记之新建项目的方法
Jul 18 #Javascript
详解使用nvm安装node.js
Jul 18 #Javascript
You might like
《PHP边学边教》(02.Apache+PHP环境配置――下篇)
2006/12/13 PHP
apache+codeigniter 通过.htcaccess做动态二级域名解析
2012/07/01 PHP
php中限制ip段访问、禁止ip提交表单的代码分享
2014/08/22 PHP
PHP批量查询WordPress留言者E-mail地址实现方法
2015/02/15 PHP
PHP实现的memcache环形队列类实例
2015/07/28 PHP
String.prototype实现的一些javascript函数介绍
2013/11/22 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
jquery实现多条件筛选特效代码分享
2015/08/28 Javascript
JavaScript数据结构与算法之栈与队列
2016/01/29 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
javascript简单实现等比例缩小图片的方法
2016/07/27 Javascript
使用vue官方提供的模板vue-cli搭建一个helloWorld案例分析
2018/01/16 Javascript
微信小程序实现折叠面板
2018/01/31 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
Vue实现点击显示不同图片的效果
2019/08/10 Javascript
jQuery实现验证用户登录
2019/12/10 jQuery
Vue(定时器)解决mounted不能获取到data中的数据问题
2020/07/30 Javascript
[53:36]Liquid vs VP Supermajor决赛 BO 第三场 6.10
2018/07/05 DOTA
python实现的简单RPG游戏流程实例
2015/06/28 Python
python的random模块及加权随机算法的python实现方法
2017/01/04 Python
Python编程之基于概率论的分类方法:朴素贝叶斯
2017/11/11 Python
python微信撤回监测代码
2019/04/29 Python
python创建学生管理系统
2019/11/22 Python
python实现ftp文件传输功能
2020/03/20 Python
Python turtle库的画笔控制说明
2020/06/28 Python
python实现人工蜂群算法
2020/09/18 Python
全球最大的游戏市场:G2A
2018/07/05 全球购物
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
C/C++ 笔试、面试题目大汇总
2015/11/21 面试题
求职信模版
2013/11/30 职场文书
搞笑婚礼主持词
2014/03/13 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
《宝可梦》动画制作25周年到来 官方发布特别纪念视频
2022/04/01 日漫