![]()
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="./vue.js"></script>
<title>Document</title>
</head>
<body>
<div id="app">
<div v-if="hasGoods">
<label for="check-all">
全选
</label>
<input id="check-all" type="checkbox" v-model="isCheckAll" @change="allCheck" />
<ul>
<li v-for="(i, index) in datalist">
<input type="checkbox" v-bind:id=i.id v-model="checkgroup" :value="i" @change="isAllCheck">
<label v-bind:for=i.id>
商品名称:{{i.name}}
价格:<span>{{i.price}}</span>
</label>
<button @click="sub(i)">-</button>
数量:<span>{{i.count}}</span>
<button @click="add(i)">+</button>
<button @click="del(i, index)">移除</button>
</li>
</ul>
<p>
<span>总计:{{ total|filter }}</span>
</p>
<p>{{checkgroup}}</p>
</div>
<div v-else>
空空如也
</div>
</div>
<script>
const vm = new Vue({
el: "#app",
data: {
isCheckAll: false,
checkgroup: [],
datalist: [
{ id: "1", name: '裤子', price: '100', count: 1 },
{ id: "2", name: '卫衣', price: '100', count: 1 },
{ id: "3", name: '风扇', price: '100', count: 1 },
{ id: "4", name: '苹果', price: '100', count: 1 },
]
},
computed: {
hasGoods:function(){
if(this.datalist.length > 0){
return true;
}else{
return false;
}
},
total: function () {
var sum = 0;
for (var i in this.checkgroup) {
sum += this.checkgroup[i].price * this.checkgroup[i].count;
}
return sum;
},
},
methods: {
allCheck: function () {
if (this.isCheckAll) {
this.checkgroup = this.datalist;
} else {
this.checkgroup = [];
}
},
isAllCheck: function () {
if (this.checkgroup.length === this.datalist.length && this.checkgroup.length > 0) {
this.isCheckAll = true;
} else {
this.isCheckAll = false;
}
},
add: function (g) {
g.count++;
},
sub: function (g) {
if (g.count === 1) {
return;
}
g.count--;
},
del: function (g, index) {
this.datalist.splice(index, 1)
let theIndex = this.checkgroup.indexOf(g)
if(theIndex != -1){
this.checkgroup.splice(theIndex, 1)
}
},
},
filters: {
filter: function (pra) {
return "¥" + pra + "元"
},
}
})
</script>
</body>
</html>