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中数组中求最大值示例代码
Dec 18 Javascript
JavaScript Window浏览器对象模型方法与属性汇总
Apr 20 Javascript
JavaScript使用addEventListener添加事件监听用法实例
Jun 01 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
javascript时间差插件分享
Jul 18 Javascript
react.js 翻页插件实例代码
Jan 19 Javascript
angular2 ng build部署后base文件路径问题详细解答
Jul 15 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
Sep 21 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
JS+HTML5实现获取手机验证码倒计时按钮
Aug 08 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
利用js实现简单开关灯代码
Nov 23 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保存session的实现思路及示例代码
2014/09/09 PHP
php短网址和数字之间相互转换的方法
2015/03/13 PHP
php适配器模式简单应用示例
2019/10/23 PHP
Node.js入门教程:在windows和Linux上安装配置Node.js图文教程
2014/08/14 Javascript
JavaScript中的this关键字使用方法总结
2015/03/13 Javascript
JavaScript实现把rgb颜色转换成16进制颜色的方法
2015/06/01 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
AngularJS中$interval的用法详解
2016/02/02 Javascript
Javascript中的数组常用方法解析
2016/06/17 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
JS与jQuery实现ListBox上移,下移,左移,右移操作功能示例
2018/05/31 jQuery
Vue 莹石摄像头直播视频实例代码
2018/08/31 Javascript
Promise扫盲贴
2019/06/24 Javascript
vue 实现图片懒加载功能
2020/12/31 Vue.js
python正则分组的应用
2013/11/10 Python
python读取word文档的方法
2015/05/09 Python
Selenium控制浏览器常见操作示例
2018/08/13 Python
对Python 3.5拼接列表的新语法详解
2018/11/08 Python
Python3使用TCP编写一个简易的文件下载器功能
2019/05/08 Python
如何使用Python自动控制windows桌面
2019/07/11 Python
win10子系统python开发环境准备及kenlm和nltk的使用教程
2019/10/14 Python
scrapy数据存储在mysql数据库的两种方式(同步和异步)
2020/02/18 Python
Django中文件上传和文件访问微项目的方法
2020/04/27 Python
AmazeUI 缩略图的实现示例
2020/08/18 HTML / CSS
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
一套Java笔试题
2016/08/20 面试题
销售顾问岗位职责
2014/02/25 职场文书
公益广告语集锦
2014/03/13 职场文书
预备党员承诺书
2014/03/25 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
十八大宣传标语
2014/10/09 职场文书
2014群众路线学习笔记
2014/11/06 职场文书
财务工作失误检讨书
2015/02/19 职场文书
工地材料员岗位职责
2015/04/11 职场文书
开除员工通知
2015/04/22 职场文书
SQL 聚合、分组和排序
2021/11/11 MySQL