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 相关文章推荐
Extjs列表详细信息窗口新建后自动加载解决方法
Apr 02 Javascript
JavaScript中指定函数名称的相关方法
Jun 04 Javascript
Bootstrap3.0建站教程(一)之bootstrap表单元素排版
Jun 01 Javascript
[原创]jQuery常用的4种加载方式分析
Jul 25 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
JavaScript模板引擎Template.js使用详解
Dec 15 Javascript
详解Angularjs在控制器(controller.js)中使用过滤器($filter)格式化日期/时间实例
Feb 17 Javascript
Angular.js自定义指令学习笔记实例
Feb 24 Javascript
seajs模块压缩问题与解决方法实例分析
Oct 10 Javascript
Vue引用第三方datepicker插件无法监听datepicker输入框的值的解决
Jan 27 Javascript
vue使用map代替Aarry数组循环遍历的方法
Apr 30 Javascript
LayUI+Shiro实现动态菜单并记住菜单收展的示例
May 06 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
Laravel 解决composer相关操作提示php相关异常的问题
2019/10/23 PHP
浅谈tudou土豆网首页图片延迟加载的效果
2010/06/23 Javascript
window.opener用法和用途实例介绍
2013/08/19 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
JS中JSON对象和String之间的互转及处理技巧
2016/04/06 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
2016/08/17 Javascript
详解能在多种前端框架下使用的表格控件
2017/01/11 Javascript
JS实现合并json对象的方法
2017/10/10 Javascript
vue初尝试--项目结构(推荐)
2018/01/30 Javascript
JavaScript callback回调函数用法实例分析
2018/05/08 Javascript
JS实现520 表白简单代码
2018/05/21 Javascript
Mint UI实现A-Z字母排序的城市选择列表
2018/12/28 Javascript
搭建一个Koa后端项目脚手架的方法步骤
2019/05/30 Javascript
使用webpack搭建vue项目及注意事项
2019/06/10 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
解决vuex刷新数据消失问题
2020/11/12 Javascript
Python中使用haystack实现django全文检索搜索引擎功能
2017/08/26 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python smtplib实现发送邮件功能
2018/05/22 Python
python按时间排序目录下的文件实现方法
2018/10/17 Python
Python数据可视化教程之Matplotlib实现各种图表实例
2019/01/13 Python
CentOS6.9 Python环境配置(python2.7、pip、virtualenv)
2019/05/06 Python
python之信息加密题目详解
2019/06/26 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Python序列对象与String类型内置方法详解
2019/10/22 Python
python实现大学人员管理系统
2019/10/25 Python
Python趣味入门教程之循环语句while
2020/08/26 Python
如何快速理解python的垃圾回收机制
2020/09/01 Python
Python模拟登录requests.Session应用详解
2020/11/17 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
输入N,打印N*N矩阵
2012/02/20 面试题
2019年.net常见面试问题
2012/02/12 面试题
公司总经理工作职责管理办法
2014/02/28 职场文书
班级学习雷锋活动总结
2014/07/04 职场文书
2015年保洁员工作总结
2015/05/04 职场文书