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 相关文章推荐
asp 取文本框名称代码
Dec 02 Javascript
javascript常用的正则表达式实例
May 15 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
Mar 06 Javascript
JavaScript程序中的流程控制语句用法总结
May 23 Javascript
JS弹出新窗口被拦截的解决方法
Aug 09 Javascript
详解vue渲染从后台获取的json数据
Jul 06 Javascript
JS正则表达式完美实现身份证校验功能
Oct 18 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
javascript中undefined的本质解析
Jul 31 Javascript
vue.js实现数据库的JSON数据输出渲染到html页面功能示例
Aug 03 Javascript
JavaScript实现栈结构Stack过程详解
Mar 07 Javascript
javascript实现左右缓动动画函数
Nov 25 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
mac下使用brew配置环境的步骤分享
2011/05/23 PHP
php+xml结合Ajax实现点赞功能完整实例
2015/01/30 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
浅谈php调用python文件
2019/03/29 PHP
Javascript 原型和继承(Prototypes and Inheritance)
2009/04/01 Javascript
基于JQuery的简单实现折叠菜单代码
2010/09/15 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
字段太多jquey快速清空表单内容方法
2014/08/21 Javascript
简述JavaScript对传统文档对象模型的支持
2015/06/16 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
Vue 父子组件的数据传递、修改和更新方法
2018/03/01 Javascript
JS高阶函数原理与用法实例分析
2019/01/15 Javascript
JS代码简洁方式之函数方法详解
2020/07/28 Javascript
Python的Django框架中消息通知的计数器实现教程
2016/06/13 Python
python逐行读写txt文件的实例讲解
2018/04/03 Python
python3解析库pyquery的深入讲解
2018/06/26 Python
python机器人运动范围问题的解答
2019/04/29 Python
python3字符串操作总结
2019/07/24 Python
Python中字典与恒等运算符的用法分析
2019/08/22 Python
Python计算不规则图形面积算法实现解析
2019/11/22 Python
Numpy之reshape()使用详解
2019/12/26 Python
使用jupyter Nodebook查看函数或方法的参数以及使用情况
2020/04/14 Python
在matplotlib中改变figure的布局和大小实例
2020/04/23 Python
python 引用传递和值传递详解(实参,形参)
2020/06/05 Python
python读取xml文件方法解析
2020/08/04 Python
利用纯CSS3实现文字向右循环闪过效果实例(可用于移动端)
2017/06/15 HTML / CSS
CSS教程:CSS3圆角属性
2009/04/02 HTML / CSS
优秀毕业生求职推荐信范文
2013/11/21 职场文书
关于护士节的演讲稿
2014/05/26 职场文书
2014年导购员工作总结
2014/11/18 职场文书
2014年接待工作总结
2014/11/26 职场文书
邀请函范文
2015/02/02 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android