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学习笔记(十一) 正则表达式介绍
Jun 20 Javascript
浅谈jquery回调函数callback的使用
Jan 30 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
BootStrap 获得轮播中的索引和当前活动的焦点对象
May 11 Javascript
vue中用H5实现文件上传的方法实例代码
May 27 Javascript
Vue响应式原理深入解析及注意事项
Dec 11 Javascript
JavaScript复制内容到剪贴板的两种常用方法
Feb 27 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
JS实现的新闻列表自动滚动效果示例
Jan 30 Javascript
vue接入腾讯防水墙代码
May 07 Javascript
vue移动端使用appClound拉起支付宝支付的实现方法
Nov 21 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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建立Ftp连接的方法
2015/03/07 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
Javascript的IE和Firefox兼容性汇编(zz)
2007/02/02 Javascript
给Javascript数组插入一条记录的代码
2007/08/30 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
jquery Moblie入门—hello world的示例代码学习
2013/01/08 Javascript
JavaScript根据数据生成百分比图和柱状图的实例代码
2013/07/14 Javascript
B/S模式项目中常用的javascript汇总
2013/12/17 Javascript
IE中鼠标经过option触发mouseout的解决方法
2015/01/29 Javascript
JQuery动画与特效实例分析
2015/02/02 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
深入理解JavaScript系列(43):设计模式之状态模式详解
2015/03/04 Javascript
JavaScript通过prototype给对象定义属性用法实例
2015/03/23 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
2015/09/14 Javascript
JS中artdialog弹出框控件之提交表单思路详解
2016/04/18 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
vue.js中过滤器的使用教程
2017/06/08 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
vue watch自动检测数据变化实时渲染的方法
2018/01/16 Javascript
jQuery 同时获取多个标签的指定内容并储存为数组
2018/11/20 jQuery
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
JavaScript对象字面量和构造函数原理与用法详解
2020/04/18 Javascript
django用户登录和注销的实现方法
2018/07/16 Python
python实现自动解数独小程序
2019/01/21 Python
在Python中字符串、列表、元组、字典之间的相互转换
2019/11/15 Python
Django 自动生成api接口文档教程
2019/11/19 Python
python实现滑雪游戏
2020/02/22 Python
基于Keras的格式化输出Loss实现方式
2020/06/17 Python
HTML5的Video标签有部分MP4无法播放的问题解析(多图)
2017/08/18 HTML / CSS
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
大学自主招生自荐信范文
2014/02/26 职场文书
超市中秋节促销方案
2014/03/21 职场文书
《美丽的丹顶鹤》教学反思
2014/04/22 职场文书
禁止高声喧哗的标语
2014/06/11 职场文书
解决goland 导入项目后import里的包报红问题
2021/05/06 Golang