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应该怎样学
Apr 16 Javascript
createElement动态创建HTML对象脚本代码
Nov 24 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
Js控制滑轮左右滑动实例
Feb 13 Javascript
javascript获取元素离文档各边距离的方法
Feb 13 Javascript
JavaScript动态改变表格单元格内容的方法
Mar 30 Javascript
js创建对象的方法汇总
Jan 07 Javascript
Uploadify上传文件方法
Mar 16 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
Nov 17 Javascript
JS浮点数运算结果不精确的Bug解决
Aug 01 Javascript
js实现移动端图片滑块验证功能
Sep 29 Javascript
vue 判断页面是首次进入还是再次刷新的实例
Nov 05 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
PHP5 的对象赋值机制介绍
2011/08/02 PHP
Thinkphp中Create方法深入探究
2014/06/16 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
javascript延时加载之defer测试
2012/12/28 Javascript
关于JS中prototype的理解
2015/09/07 Javascript
JavaScript实现简单Tip提示框效果
2016/04/20 Javascript
JavaScript中的各种操作符使用总结
2016/05/26 Javascript
JQueryMiniUI按照时间进行查询的实现方法
2017/06/07 jQuery
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
使用rollup打包JS的方法步骤
2018/12/05 Javascript
vue elementUI table 自定义表头和行合并的实例代码
2019/05/22 Javascript
es6中let和const的使用方法详解
2020/02/24 Javascript
在vue中使用回调函数,this调用无效的解决
2020/08/11 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
[34:56]Ti4冒泡赛LGD vs Liquid 1
2014/07/14 DOTA
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
详解Python中的join()函数的用法
2015/04/07 Python
初步讲解Python中的元组概念
2015/05/21 Python
Python编写一个闹钟功能
2017/07/11 Python
python多线程调用exit无法退出的解决方法
2019/02/18 Python
python实现读取excel文件中所有sheet操作示例
2019/08/09 Python
Python搭建代理IP池实现获取IP的方法
2019/10/27 Python
django-crontab实现服务端的定时任务的示例代码
2020/02/17 Python
解决pyecharts运行后产生的html文件用浏览器打开空白
2020/03/11 Python
基于python实现获取网页图片过程解析
2020/05/11 Python
keras 读取多标签图像数据方式
2020/06/12 Python
html5定制表单_动力节点Java学院整理
2017/07/11 HTML / CSS
Omio西班牙:全欧洲低价大巴、火车和航班搜索和比价
2017/02/11 全球购物
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
优秀大学生职业生涯规划书
2014/02/27 职场文书
家长会学生演讲稿
2014/04/26 职场文书
家长对孩子的寒假评语
2015/10/09 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
vue+echarts实现多条折线图
2022/03/21 Vue.js
pycharm安装深度学习pytorch的d2l包失败问题解决
2022/03/25 Python
Python开发五子棋小游戏
2022/05/02 Python