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 相关文章推荐
Wordpress ThickBox 点击图片显示下一张图的修改方法
Dec 11 Javascript
javascript动画浅析
Aug 30 Javascript
JS中类或对象的定义说明
Mar 10 Javascript
jquery实现带二级菜单的导航示例
Apr 28 Javascript
Bootstrap每天必学之折叠
Apr 12 Javascript
jQuery判断是否存在滚动条的简单方法
Sep 17 Javascript
AngularJS页面带参跳转及参数解析操作示例
Jun 28 Javascript
JS实现的贪吃蛇游戏完整实例
Jan 18 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
Mar 13 Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 Javascript
操作按钮悬浮固定在微信小程序底部的实现代码
Aug 02 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 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 版本]
2007/03/20 PHP
php过滤XSS攻击的函数
2013/11/12 PHP
linux中cd命令使用详解
2015/01/08 PHP
PHP中Restful api 错误提示返回值实现思路
2016/04/12 PHP
thinkphp3.2嵌入百度编辑器ueditor的实例代码
2017/07/13 PHP
PhpStorm 2020.3:新增开箱即用的PHP 8属性(推荐)
2020/10/30 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
开发插件的两个方法jquery.fn.extend与jquery.extend
2013/11/21 Javascript
javascript如何创建表格(javascript绘制表格的二种方法)
2013/12/10 Javascript
Jquery实现textarea根据文本内容自适应高度
2015/04/03 Javascript
jQuery中$.ajax()和$.getJson()同步处理详解
2015/08/12 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
深究AngularJS中$sce的使用
2017/06/12 Javascript
基于Vue实现平滑过渡的拖拽排序功能
2019/06/12 Javascript
node.JS的crypto加密模块使用方法详解(MD5,AES,Hmac,Diffie-Hellman加密)
2020/02/06 Javascript
详解Vue之计算属性
2020/06/20 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
python urllib爬取百度云连接的实例代码
2017/06/19 Python
python中从str中提取元素到list以及将list转换为str的方法
2018/06/26 Python
keras实现多GPU或指定GPU的使用介绍
2020/06/17 Python
利用Python优雅的登录校园网
2020/10/21 Python
Python制作简单的剪刀石头布游戏
2020/12/10 Python
python和opencv构建运动检测器的实现
2021/03/03 Python
使用iframe+postMessage实现页面跨域通信的示例代码
2020/01/14 HTML / CSS
澳大利亚婴儿、幼儿和儿童在线设计师商店:Smooch Baby
2019/02/16 全球购物
英国最大的户外商店:Go Outdoors
2019/04/17 全球购物
乌克兰的第一家手表店:Deka
2020/03/05 全球购物
行政部岗位职责范本
2014/03/13 职场文书
合作投资意向书
2014/04/01 职场文书
语文高效课堂实施方案
2014/05/03 职场文书
学习实践科学发展观心得体会
2014/09/10 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
python spilt()分隔字符串的实现示例
2021/05/21 Python
vue2实现provide inject传递响应式
2021/05/21 Vue.js
python读取mnist数据集方法案例详解
2021/09/04 Python
微前端qiankun改造日渐庞大的项目教程
2022/06/21 Javascript