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 相关文章推荐
用js小类库获取浏览器的高度和宽度信息
Jan 15 Javascript
从数组中随机取x条不重复数据的JS代码
Dec 24 Javascript
jquery对单选框,多选框,文本框等常见操作小结
Jan 08 Javascript
一些实用性较高的js方法
Apr 19 Javascript
ES6记录异步函数的执行时间详解
Aug 31 Javascript
原生js实现网页顶部自动下拉/收缩广告效果
Jan 20 Javascript
利用NPM淘宝的node.js镜像加速nvm
Mar 27 Javascript
vue mint-ui 实现省市区街道4级联动示例(仿淘宝京东收货地址4级联动)
Oct 16 Javascript
JS设计模式之访问者模式定义与用法分析
Feb 05 Javascript
深入理解ES6中let和闭包
Feb 22 Javascript
微信小程序 云开发模糊查询实现解析
Sep 02 Javascript
Node.js Domain 模块实例详解
Mar 18 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实现mysql数据库操作类分享
2014/02/14 PHP
PHP页面跳转操作实例分析(header方法)
2016/09/28 PHP
PHP使用new StdClass()创建空对象的方法分析
2017/06/06 PHP
PHP实现APP微信支付的实例讲解
2018/02/10 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
动态调用css文件——jquery的应用
2007/02/20 Javascript
javascript 鼠标滚轮事件
2009/04/09 Javascript
IE6下CSS图片缓存问题解决方法
2010/12/09 Javascript
JS随机漂浮广告代码具体实例
2013/11/19 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
jquery append()方法与html()方法的区别及使用介绍
2014/08/01 Javascript
浅谈Javascript数组(推荐)
2016/05/17 Javascript
vue脚手架vue-cli的学习使用教程
2017/06/06 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
理解Angular的providers给Http添加默认headers
2017/07/04 Javascript
jQuery+CSS实现的table表格行列转置功能示例
2018/01/08 jQuery
react-native android状态栏的实现
2018/06/15 Javascript
JS使用Date对象实时显示当前系统时间简单示例
2018/08/23 Javascript
vue 利用路由守卫判断是否登录的方法
2018/09/29 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
Vuex中的Mutations的具体使用方法
2020/06/01 Javascript
详解Python中的循环语句的用法
2015/04/09 Python
使用pdb模块调试Python程序实例
2015/06/02 Python
python 计算数组中每个数字出现多少次--“Bucket”桶的思想
2017/12/19 Python
Python numpy 提取矩阵的某一行或某一列的实例
2018/04/03 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
Django如何防止定时任务并发浅析
2019/05/14 Python
django 类视图的使用方法详解
2019/07/24 Python
python 协程中的迭代器,生成器原理及应用实例详解
2019/10/28 Python
在python中利用pycharm自定义代码块教程(三步搞定)
2020/04/15 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
使用CSS3实现圆角,阴影,透明
2014/12/23 HTML / CSS
会展策划与管理专业求职信
2014/06/09 职场文书
创先争优活动心得体会
2014/09/04 职场文书