由于工作的需要并鉴于网上的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>
效果:
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# vue
# 实现单选和全选
# vue实现单选
# vue实现单选全选
# 使用javascript实现ListBox左右全选
# 单选
# 多选
# 全请
# Gridview使用CheckBox全选与单选采用js实现同时高亮显示选择行
# Vue实现购物车的全选、单选、显示商品价格代码实例
# JS+Vue实现三级全选单选
# 全选
# 写了
# 不合适
# 大家多多
# 网上
# checkbox
# type
# checkAll
# model
# tr
# table
# input
# td
# checkedCount
# length
# show
# true
# checked
# index
相关文章:
如何用PHP工具快速搭建高效网站?
已有域名如何快速搭建专属网站?
如何生成腾讯云建站专用兑换码?
如何用西部建站助手快速创建专业网站?
宝华建站服务条款解析:五站合一功能与SEO优化设置指南
非常酷的网站设计制作软件,酷培ai教育官方网站?
已有域名建站全流程解析:网站搭建步骤与建站工具选择
网站制作公司广州有几家,广州尚艺美发学校网站是多少?
如何批量查询域名的建站时间记录?
建站为何优先选择香港服务器?
音响网站制作视频教程,隆霸音响官方网站?
如何在腾讯云服务器上快速搭建个人网站?
胶州企业网站制作公司,青岛石头网络科技有限公司怎么样?
深圳网站制作平台,深圳市做网站好的公司有哪些?
在线教育网站制作平台,山西立德教育官网?
如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南
猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?
C++ static_cast和dynamic_cast区别_C++静态转换与动态类型安全转换
html制作网站的步骤有哪些,iapp如何添加网页?
高端企业智能建站程序:SEO优化与响应式模板定制开发
如何注册花生壳免费域名并搭建个人网站?
,如何利用word制作宣传手册?
建站10G流量真的够用吗?如何应对访问高峰?
北京建设网站制作公司,北京古代建筑博物馆预约官网?
在线制作视频的网站有哪些,电脑如何制作视频短片?
已有域名和空间如何快速搭建网站?
,sp开头的版面叫什么?
建站之星伪静态规则如何设置?
大连 网站制作,大连天途有线官网?
最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?
如何基于云服务器快速搭建网站及云盘系统?
如何使用Golang table-driven基准测试_多组数据测量函数效率
高端建站三要素:定制模板、企业官网与响应式设计优化
如何获取开源自助建站系统免费下载链接?
制作表格网站有哪些,线上表格怎么弄?
广州商城建站系统开发成本与周期如何控制?
如何挑选最适合建站的高性能VPS主机?
如何通过商城免费建站系统源码自定义网站主题?
西安大型网站制作公司,西安招聘网站最好的是哪个?
定制建站流程步骤详解:一站式方案设计与开发指南
seo网站制作优化,网站SEO优化步骤有哪些?
为什么Go需要go mod文件_Go go mod文件作用说明
创业网站制作流程,创业网站可靠吗?
Thinkphp 中 distinct 的用法解析
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
h5在线制作网站电脑版下载,h5网页制作软件?
可靠的网站设计制作软件,做网站设计需要什么样的电脑配置?
青浦网站制作公司有哪些,苹果官网发货地是哪里?
建站主机选择指南:服务器配置与SEO优化实战技巧
如何构建满足综合性能需求的优质建站方案?
*请认真填写需求信息,我们会在24小时内与您取得联系。