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 22 Javascript
asp.net网站开发中用jquery实现滚动浏览器滚动条加载数据(类似于腾讯微博)
Mar 14 Javascript
JavaScript+html5 canvas制作色彩斑斓的正方形效果
Jan 27 Javascript
JS简单实现表格排序功能示例
Dec 20 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
Mar 09 Javascript
ES6 Promise对象概念与用法分析
Apr 01 Javascript
jQuery操作css样式
May 15 jQuery
JQuery 封装 Ajax 常用方法(推荐)
May 21 jQuery
JS实现多级菜单中当前菜单不随页面跳转样式而发生变化
May 30 Javascript
js实现多张图片延迟加载效果
Jul 17 Javascript
原生JS实现自定义滚动条效果
Oct 27 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 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
先进的自动咖啡技术,真的可以取代咖啡师吗?
2021/03/06 冲泡冲煮
PHP匿名函数和use子句用法实例
2016/03/16 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
让FireFox支持innerText的实现代码
2009/12/01 Javascript
JavaScript版DateAdd和DateDiff函数代码
2012/03/01 Javascript
js实现Select列表内容自动滚动效果代码
2015/08/20 Javascript
javascript实现的图片预览功能
2017/03/25 Javascript
微信小程序日历组件calendar详解及实例
2017/06/08 Javascript
分享19个JavaScript 有用的简写写法
2017/07/07 Javascript
node.js+captchapng+jsonwebtoken实现登录验证示例
2017/08/17 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
完美解决通过IP地址访问VUE项目的问题
2020/07/18 Javascript
JavaScript实现烟花绽放动画效果
2020/08/04 Javascript
[04:03]DOTA2肉山黑名单梦之声 风暴之灵中文配音鉴赏
2013/07/03 DOTA
[58:46]OG vs NAVI 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python的ORM框架SQLAlchemy入门教程
2014/04/28 Python
python实现读取并显示图片的两种方法
2017/01/13 Python
浅谈python中对于json写入txt文件的编码问题
2018/06/07 Python
Python迭代器与生成器用法实例分析
2018/07/09 Python
Python实现基于POS算法的区块链
2018/08/07 Python
python实现根据文件关键字进行切分为多个文件的示例
2018/12/10 Python
python实现最短路径的实例方法
2020/07/19 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
Tod’s英国官方网站:意大利奢华手工制作手袋和鞋履
2019/03/15 全球购物
阿联酋最好的手机、电子产品和家用电器网上商店:Eros Digital Home
2020/08/09 全球购物
师范毕业生自荐信
2013/10/17 职场文书
医科学校毕业生自荐信
2013/11/09 职场文书
大家检讨书5000字
2014/02/03 职场文书
公司司机岗位职责
2014/02/07 职场文书
2014年班主任自我评价范文
2014/04/23 职场文书
厨房管理计划书
2014/04/27 职场文书
2016年助残日旅游活动总结
2016/04/01 职场文书
canvas绘制折线路径动画实现
2021/05/12 Javascript
浅谈PHP7中的一些小技巧
2021/05/29 PHP
jackson json序列化实现首字母大写,第二个字母需小写
2021/06/29 Java/Android
宝塔更新Python及Flask项目的部署
2022/04/11 Python