亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

VUE之購物車

發布時間:2020-03-08 10:44:38 來源:網絡 閱讀:848 作者:專注地一哥 欄目:web開發


我寫了個簡單的購物車如下!

首先是商品列表:

這個數據先是假數據,以后再改正

好, 商品列表就寫完了, 商品類,就三個屬性!

我們重點看,添加到購物車的邏輯! addItem() 方法

當我們得到購物車的數據的時候,我們就開始將數組真正傳遞給購物車了!

一個傳遞,另外我們購物車組件就得接收!

Cart.vue

<template>

????<div>

????????<h3>{{name}}</h3>

????????????<!--購物車列表 ?-->

????????????<table>

????????????????<tr>

????????????????????<th>選中</th>

????????????????????<th>商品名稱</th>

????????????????????<th>價格</th>

????????????????????<th>數量</th>

????????????????????<th>單品總價</th>

????????????????????<th>操作</th>

????????????????</tr>

????????????????<tr v-for = " c in cartList" :key = "c.id">

????????????????????<td>

????????????????????????<!-- 雙向數據綁定 -->

????????????????????????<input type="checkbox" v-model="c.active">

????????????????????</td>

????????????????????<td>

????????????????????????{{c.name}}

????????????????????</td>

????????????????????<td>{{c.price}}</td>

????????????????????<td>

????????????????????????<button @click = "addCount(c.id)">add</button>

????????????????????????{{c.count}}

????????????????????????<button @click = "minuxCount(c.id)">minus</button>

????????????????????</td>

????????????????????<td>{{c.count * c.price}}</td>

????????????????????<td>

????????????????????????<button @click = "deleteFromCart(c.id)">刪除</button>

????????????????????</td>

????????????????</tr>

????????????????<tr v-if="this.cartList.length">

????????????????????<td>總價格</td>

????????????????????<!-- 計算屬性的寫法 -->

????????????????????<td colspan="5">{{getTotal}}</td>

????????????????</tr>

????????????</table>

?

????????????

????</div>

</template>

?

<script>

????// ?我們做事情,臉皮要厚!

????export default {

??????????name:"cart",

??????????data(){

??????????????return {

?

??????????????}

??????????},

????????// ??接受參數的信息

??????????props:["name","cartList"],

??????????methods:{

??????????????addCount(index){

?????????????????const good =this.cartList.find(item=>item.id==index);

?????????????????good.count++; ??

??????????????},

??????????????minuxCount(index){

?????????????????????const good =this.cartList.find(item=>item.id==index);

?????????????????????if(good.count==0){

?????????????????????????return;

?????????????????????}

?????????????????????good.count--;

??????????????},

??????????????deleteFromCart(index){

??????????????????// 找到具體的商品

???????????????????const good =this.cartList.find(item=>item.id==index);

???????????????????if(window.confirm("您確定刪除該商品嘛?")){

????????????????????????????????????????????????????????????????????????????????????function(){ //亨達全球HantecGlobal返傭?http://www.kaifx.cn/broker/hantecglobal.html

???????????????????????// 在這里執行刪除操作

???????????????????????let i = this.cartList.indexOf(good);

???????????????????????// splice 刪除操作,可以修改原數組,昨天我們學過! 不要忘記了

???????????????????????this.cartList.splice(i,1);

???????????????????}

??????????????}

?

??????????},

??????????computed:{

??????????????//計算總價格

??????????????getTotal(){

??????????????????var sum = 0;

??????????????????this.cartList.forEach(element => {

??????????????????????if(element.active){

????????????????????????sum+=element.price*element.count;

??????????????????????}

??????????????????});

??????????????????return sum;

??????????????}

??????????}

?

????}

</script>

<style ?scoped>

????.cart_box{

????????width:600px;

????????margin: 10px auto;

????}

</style>

這個Cart.vue 中,我用到了,計算屬性(計算總價格)

還用到了,如果得到元素在數組中的下標

還用到了,雙向數據綁定!

我這個綁定就是綁定的 是否選中這個邏輯,我綁定到了,購物車中,商品的一個字段!

至于v-for 遍歷時,key 的綁定我選擇了,商品的id?

行,上面還缺,一個商品類表那個組件的代碼!

HelloWorld.vue

<template>

<!-- ?每個組件必須有一個根組件,這點要明確的知道! -->

??<div>

????<h2>{{ msg }}</h2>

?

??<!-- ?商品列表信息 -->

??<ul>

??????<li v-for="(g,index) in goods" :key="index">

????????????{{g}} --{{g.name}}

????????<button @click = "addItem(index)">添加到購物車</button>

??????</li>

??</ul> ??

?

??<!-- ?購物車信息 -->

<!-- ?使用注冊進來的組件 -->

<cart name="action" :cartList="cartList"></cart>

</div>

</template>

?

<script>

?

// 我徹底蒙了, 除了一些特別的是函數,別的都是:

// 導入購物車組件

import Cart from './Cart.vue';

export default {

??name: 'HelloWorld',

??components:{

????// ?局部注冊功能!

????Cart

??},

??data(){

????return {

??????show:false,

??????// 購物車列表信息

??????cartList:[],

??????goods:[

????????{

??????????id:"1001",

??????????name:"道德經",

??????????price:201

????????},{

???????????id:"1002",

??????????name:"道德經2",

??????????price:203

????????},{

???????????id:"1003",

??????????name:"道德經3",

??????????price:204 ????????

????????}

??????]

????}

??},

??props: {

????// 指定接受參數的類型

????msg: String

??},

??methods:{

????addItem(index){

??????// 得到該商品

??????const ?good = this.goods[index];

??????const item = this.cartList.find(item=>item.id == good.id);

??????// 如果item 不為空,則表示已經添加到購車中了

?????if(item){

????????item.count+=1;

??????}else{

????????this.cartList.push({

??????????????...good,

???????????????count:1,

???????????????active:true

????????}

????????);

??????}

????}

??}

?

}

</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->

<style scoped>

h4 {

??margin: 40px 0 0;

}

ul {

??list-style-type: none;

??padding: 0;

}

li {

??margin: 0 10px;

}

a {

??color: #42b983;

}

</style>

整體,就是 HelloWorld.vue 里面使用 Cart.vue

gif動圖我就不做了,以后我會下個工具做個動圖:

?

?

?


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

慈利县| 昭平县| 松江区| 常州市| 洛扎县| 抚顺县| 通州市| 建湖县| 乐清市| 四平市| 台中市| 图木舒克市| 镇安县| 中宁县| 长垣县| 满洲里市| 丰镇市| 梅州市| 乌审旗| 揭东县| 武邑县| 海口市| 泰兴市| 广州市| 麦盖提县| 武平县| 江达县| 房山区| 武川县| 抚远县| 商河县| 仙桃市| 九龙坡区| 东明县| 色达县| 固原市| 纳雍县| 雅江县| 永福县| 浙江省| 日喀则市|