全選反選,實時響應(yīng)更新價格
1.一個購物車下有多個商家,一個商家下有多個商品
2.3勾選的時候,所有(商家,商品)的復(fù)選框都是選中狀態(tài),2勾選的時候,2下面的1都是選中狀態(tài),只要有其中一個1沒有勾選,2都還是未選中狀態(tài)
3.勾選中的價格,都要實時更新到總價
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Vue 測試實例 - 菜鳥教程(runoob.com)</title>
<script src="https://cdn.bootcss.com/vue/2.4.2/vue.min.js"></script>
<style>
* {
padding: 0;
margin: 0;
}
.app-cart {
padding-bottom: 100px;
background-color: #f5f5f5;
}
.app-cart .cart-header {
height: 40px;
line-height: 40px;
text-align: center;
border-bottom: 1px solid #ccc;
}
.cart-main .main-item {
margin-bottom: 10px;
background-color: #fff;
box-sizing: border-box;
border-top: 1px solid #ccc;
border-bottom: 1px solid #ccc;
}
.cart-main .main-item .item-top {
display: flex;
align-items: center;
height: 40px;
box-sizing: border-box;
border-bottom: 1px solid #ccc;
}
.cart-main .main-item .item-top input {
flex: 0 0 50px;
width: 50px;
}
.cart-main .main-item .item-top span {
flex: 1;
}
.cart-main .main-item .item-middle .middle-list {
display: flex;
box-sizing: border-box;
border-bottom: 1px solid #ccc;
}
.cart-main .main-item .item-middle .middle-list .list-left {
flex: 0 0 50px;
width: 50px;
text-align: center;
}
.cart-main .main-item .item-middle .middle-list .list-center {
flex: 0 0 100px;
width: 100px;
}
.cart-main .main-item .item-middle .middle-list .list-right {
display: flex;
flex-direction: column;
flex: 1;
}
.cart-main .main-item .item-footer {
display: flex;
align-items: center;
justify-content: space-between;
height: 40px;
border-top: 1px solid #ccc;
}
.cart-footer {
position: fixed;
left: 0;
bottom: 60px;
width: 100%;
height: 50px;
display: flex;
background-color: #fff;
box-sizing: border-box;
border-top: 1px solid #ccc;
}
.cart-footer .footer-left {
flex: 0 0 50px;
width: 50px;
display: flex;
align-items: center;
margin-left: 20px;
}
.cart-footer .footer-center {
flex: 1;
text-align: right;
}
.cart-footer .footer-right {
flex: 0 0 100px;
width: 100px;
background-color: #ff0000;
color: #fff;
}
</style>
</head>
<body>
<div id="app">
<div class="app-cart">
<header class="cart-header">購物車</header>
<main class="cart-main">
<div v-for="item1 in cartData" :key="item1.id" class="main-item">
<div class="item-top">
<input type="checkbox" v-model="item1.checked" @change="selectItem1(item1)">
<span>{{item1.shop_name}}</span>
</div>
<div class="item-middle">
<div v-for="(item2,index2) in item1.goodsList" :key="item2.id" class="middle-list">
<div class="list-left">
<input type="checkbox" @change="selectItem2(item1)" v-model="item2.checked">
</div>
<div class="list-center">
<!-- <img v-lazy="IMAGESURL + item2.goods_img"> -->
</div>
<div class="list-right">
<p>{{item2.goods_name}}</p>
<div>
<span>單價:{{item2.goods_price}}</span>
<span>數(shù)量:{{item2.cart_goods_number}}</span>
</div>
<p>總價:{{item2.goods_price*item2.cart_goods_number}}</p>
</div>
</div>
</div>
</div>
</main>
<footer class="cart-footer">
<div class="footer-left">
<input type="checkbox" v-model="checkAll" @change="selectAll">
<p>全選</p>
</div>
<div class="footer-center">
合計:{{allPrice}}
</div>
<div class="footer-right">
結(jié)算
</div>
</footer>
</div>
</div>
<script>
new Vue({
el: '#app',
data() {
return {
cartData: [{
shop_id: 4,
shop_name: "honor之家",
checked: false,
goodsList: [{
cart_goods_number: 3,
goods_name: "honor7x",
goods_img: "honor7x.png",
goods_price: 1299,
goods_id: 3,
checked: false
}, {
cart_goods_number: 2,
goods_name: "honor6x",
goods_img: "honor6x.png",
goods_price: 1199,
goods_id: 4,
checked: false
}, {
cart_goods_number: 5,
goods_name: "honor5x",
goods_img: "honor5x.png",
goods_price: 1099,
goods_id: 5,
checked: false
}]
}, {
shop_id: 1,
shop_name: "iPhone之家",
checked: false,
goodsList: [{
cart_goods_number: 1,
goods_name: "iPhonex",
goods_img: "iPhonex.png",
goods_price: 8888,
goods_id: 1,
checked: false
}]
}],
allPrice: 0,
checkAll: false
};
},
methods: {
// 全選
selectAll() {
this.cartData.forEach(item => {
item.checked = this.checkAll;
item.goodsList.forEach(item => {
item.checked = this.checkAll;
});
});
if (this.checkAll == false) {
this.allPrice = 0;
}
},
// 第一層選擇
selectItem1(item1) {
item1.goodsList.forEach(i => {
i.checked = item1.checked;
});
},
// 第二層選擇
selectItem2(item1) {
let item1Price = 0;
let lengths = item1.goodsList.length;
let checkeds = item1.goodsList.filter(i => {
return i.checked == true;
});
if (lengths == checkeds.length) {
item1.checked = true;
} else {
item1.checked = false;
}
checkeds.forEach(item => {
this.allPrice += item.goods_price * item.cart_goods_number;
});
},
},
})
</script>
</body>
</html>
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團,成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。