vue 编写 购物车原来 直接复制 可直接在浏览器运行 测试
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="box">
全选<input type="checkbox" @change.self='allchecked()' v-model='isAllchecked'>
<ul>
<li v-for='data in datalist'>
<input type="checkbox" v-model='checkgroup' :value='data' />
{{data}}
<button @click='handleDel(data)'>-</button>
{{data.num}}
<button @click='data.num++'>+</button>
</li>
</ul>
<div>{{checkgroup}}</div>
<div>总金额:{{getSum()}}</div>
</div>
<script>
var vm = new Vue({
el: '#box',
data: {
checkgroup: [],
isAllchecked: false,
datalist: [
{
name: '商品1',
price: 52,
num: 3,
id: 1
},
{
name: '商品2',
price: 15,
num: 1,
id: 2
},
{
name: '商品3',
price: 46,
num: 1,
id: 3
},
]
},
methods: {
getSum() {
// console.log(this.checkgroup)
let sum = 0;
this.checkgroup.forEach(e => {
sum += e.num * e.price
});
if(this.checkgroup.length == this.datalist.length){
this.isAllchecked = true
}else{
this.isAllchecked = false
}
return sum
},
allchecked() {
console.log(this.isAllchecked)
if(this.isAllchecked){
this.checkgroup = this.datalist
}else{
this.checkgroup = []
}
},
handleDel(data){
console.log(data.num)
var number = data.num--
if(number === 1 ){
data.num = 1
}
}
},
})
</script>
</body>
</html>