国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

14-案例:購物車

這篇具有很好參考價值的文章主要介紹了14-案例:購物車。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?綜合案例-購物車

需求說明:

????????1. 渲染功能

? ? ? ? ? ? ? ? v-if/v-else v-for :class

? ? ? ? 2. 刪除功能

? ? ? ? ? ? ? ? 點擊傳參 filter過濾覆蓋原數(shù)組

? ? ? ? 3. 修改個數(shù)

? ? ? ? ? ? ? ? 點擊傳參 find找對象

? ? ? ? 4. 全選反選

? ? ? ? ? ? ? ? 計算屬性computed 完整寫法 get/set

? ? ? ? 5. 統(tǒng)計 選中的 總價 和 數(shù)量

? ? ? ? ? ? ? ? 計算屬性conputed reduce條件求和

? ? ? ? 6. 持久化到本地?

? ? ? ? ? ? ? ? watch監(jiān)聽,localStorage, JSON.stringfiy, JSON.parse文章來源地址http://www.zghlxwxcb.cn/news/detail-660180.html

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        .active {
            background-color: azure;
        }
    </style>

</head>

<body>
    <div id="app">
        <!-- 頂部banner -->
        <div><img></div>
        <!-- 面包屑 -->
        <div></div>

        <!-- 購物車主體 -->
        <div v-if="fruitList.length > 0">
            <div>
                <!-- 頭部 -->
                <div>
                    <div>

                    </div>
                </div>
                <!-- 身體 -->
                <div>
                    <div v-for="(item,index) in fruitList" :key="item.id" :class="{active:item.isChecked}">
                        <div><input type="checkbox" v-model="item.isChecked"></div>
                        <div><img width="100px" height="50px" :src="item.icon"></div>
                        <div>{{item.price}}</div>
                        <div>
                            <div>
                                <!-- :disabled: 禁用 -->
                                <button :disabled="item.num<=1" @click="sub(item.id)">-</button>
                                <span>{{item.num}}</span>
                                <button @click="add(item.id)">+</button>
                            </div>
                        </div>
                        <div>{{ item.num * item.price }}</div>
                        <div><button @click="del(item.id)">刪除</button></div>
                    </div>

                </div>
            </div>
            <!-- 底部 -->
            <div>
                <!-- 全選 -->
                <label>
                    <input type="checkbox" v-model="isAll">全選
                </label>
                <div>
                    <!-- 所有商品總價 -->
                    <span>總價:{{totalPrice}} </span>
                    <!-- 結(jié)算按鈕 -->
                    <button>結(jié)算({{totalCount}})</button>
                </div>
            </div>
        </div>
        <!-- 空車 -->
        <div v-else>空空如也</div>

    </div>


    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>

    <script>
        // 購物車的默認值
        const defaultArr = [
                    {
                        id: 1,
                        icon: 'http://autumnfish.cn/static/火龍果.png',
                        isChecked: true,
                        num: 2,
                        price: 6
                    }, {
                        id: 2,
                        icon: 'http://autumnfish.cn/static/荔枝.png',
                        isChecked: false,
                        num: 7,
                        price: 20
                    }, {
                        id: 3,
                        icon: 'http://autumnfish.cn/static/榴蓮.png',
                        isChecked: true,
                        num: 10,
                        price: 50
                    },
                ]
        const app = new Vue({

            el: '#app',
            data: {
                // 水果列表,從本地緩存讀取,|| []: 初始值,一般都是空數(shù)組
                fruitList:  JSON.parse(localStorage.getItem("list")) || defaultArr,
            },
            computed: {
                // 默認計算屬性:只能獲取不能設(shè)置,要設(shè)置需要寫完整的寫法
                // isAll(){
                //     // 必須所有的小選框都選中,全選按鈕才選中 -> every
                //     return  this.fruitList.every(item => item.isChecked === true)
                // }

                // 完整寫法 = get + set
                isAll:{
                    get(){
                    return  this.fruitList.every(item => item.isChecked === true)

                    },
                    set(value){
                        // 基于拿到的布爾值,要讓所有的小選框,同步狀態(tài)
                        this.fruitList.forEach(item => item.isChecked = value)
                    }
                },
                // 統(tǒng)計選中的總數(shù) reduce
                totalCount(){
                    return this.fruitList.reduce((sum,item) => {
                        if (item.isChecked){
                            // 選中 -> 需要累加
                            return sum + item.num
                        }else{
                            // 沒選中 -> 不需要累加
                            return sum
                        }
                    },0)
                },
                // 統(tǒng)計選中的總價 num * price
                totalPrice(){
                    return this.fruitList.reduce((sum,item) => {
                        if (item.isChecked){
                            return sum + item.num * item.price
                        }else{
                            return sum
                        }
                    },0)
                }

            },

            methods: {
                del(id) {
                    this.fruitList = this.fruitList.filter(item => item.id != id)
                },
                sub(id) {
                    // 1. 根據(jù)ID找到數(shù)組中的對應(yīng)項 -> find
                    const fruit = this.fruitList.find(item => item.id === id)

                    //2. 操作 num 數(shù)量
                    fruit.num--

                },
                add(id) {
                    // 1. 根據(jù)ID找到數(shù)組中的對應(yīng)項 -> find
                    const fruit = this.fruitList.find(item => item.id === id)

                    //2. 操作 num 數(shù)量
                    fruit.num++
                }
            },

             // 緩存到本地
             watch:{
                fruitList:{
                    deep: true,
                    handler(newValue){
                        // 需要將變化后的 newValue 存入本地 (轉(zhuǎn)json)
                        localStorage.setItem("list",JSON.stringify(newValue))
                    }
                }
            }
           
        })

    </script>


</body>

</html>

到了這里,關(guān)于14-案例:購物車的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vue入門三(表單控制|購物車案例|v-model進階|與后端交互|計算屬性|監(jiān)聽屬性|Vue生命周期)

    Vue入門三(表單控制|購物車案例|v-model進階|與后端交互|計算屬性|監(jiān)聽屬性|Vue生命周期)

    v-model雙向數(shù)據(jù)綁定,還可以對輸入框數(shù)據(jù)進行一定的限定。 v-modle 釋義 lazy 等待input框的數(shù)據(jù)綁定時區(qū)焦點之后再變化 number 以數(shù)字開頭并只保留后面的數(shù)字,不保留字母;字母開頭都保留 trim 去除首位的空格 與后端交互統(tǒng)一使用json編碼格式 與后端交互涉及到跨域問題后,

    2024年01月21日
    瀏覽(27)
  • itheima蒼穹外賣項目學習筆記--Day7:緩存商品 / 購物車

    通過Redis來緩存菜品數(shù)據(jù),減少數(shù)據(jù)庫查詢操作。 緩存邏輯分析: 每個分類下的菜品保存一份緩存數(shù)據(jù) 數(shù)據(jù)庫中菜品數(shù)據(jù)有變更時清理緩存數(shù)據(jù) 修改用戶端接口 DishController 的 list 方法,加入緩存處理邏輯 修改管理端接口 DishController 的相關(guān)方法,加入清理緩存的邏輯,需要

    2024年02月16日
    瀏覽(23)
  • [gtp]購物車案例參考

    [gtp]購物車案例參考

    react hooks,購物車案例. 在列表上點擊+或者-更新數(shù)量,調(diào)用接口更新單個價格. 點擊table的checkbox勾選后,計算總價? 對于React Hooks和購物車案例,您可以使用useState來管理列表中商品的數(shù)量和總價。當點擊\\\"+“或”-\\\"按鈕時,可以更新相應(yīng)商品的數(shù)量,并通過調(diào)用接口來更新單個商品

    2024年02月13日
    瀏覽(20)
  • 基于jQuery------購物車案例

    基于jQuery------購物車案例

    目錄 基于jQuery------購物車案例 案例:購物車案例模塊-增減商品數(shù)量分析 案例:購物車案例模塊-修改商品小計分析? 案例:購物車案例模塊-計算總計和總額 案例:購物車案例模塊-刪除商品模塊 ?案例:購物車案例模塊-選中商品添加背景 html ?js css? 效果? ① 核心思路:首

    2024年02月02日
    瀏覽(18)
  • javascript+css+html購物車案例

    javascript+css+html購物車案例

    javascript代碼部分主要實現(xiàn)三部分功能? 1、商品數(shù)量增加(減少)同時小計增加(減少) 這部分主要是通過for循環(huán)給增加(減少)按鈕綁定點擊事件 1)點擊后計數(shù)器自增(自減) 2)計數(shù)器數(shù)量*對應(yīng)商品單價 賦值給對應(yīng)商品小計(涉及到數(shù)據(jù)類型轉(zhuǎn)換) parseInt(\\\'12ccc\\\' ) →

    2024年02月02日
    瀏覽(15)
  • JavaWeb(10)——前端綜合案例4(購物車示例)

    JavaWeb(10)——前端綜合案例4(購物車示例)

    ???????購物車需要展示一個已加入購物車的商品列表,包含商品名稱、商品單價、購買數(shù)量和操作 等信息,還需要實時顯示購買的總價。其中購買數(shù)量可以增加或減少,每類商品還可以從購物車中移除。最終實現(xiàn)的效果大致如圖所示。 基礎(chǔ)版 plus版? ? ? ????????先在

    2024年02月05日
    瀏覽(19)
  • 微信小程序?qū)崿F(xiàn)商品加入購物車案例

    微信小程序?qū)崿F(xiàn)商品加入購物車案例

    思考: 購物車中的數(shù)據(jù)保存在哪里?用哪種數(shù)據(jù)結(jié)構(gòu)進行保存? 小程序中可能有多個頁面需要對購物車中的數(shù)據(jù)進行操作,因此我們想到把數(shù)據(jù)存到全局中??梢允褂?wx.setStorageSync() 儲存,用 wx.getStorageSync() 進行獲取,以數(shù)組格式方便對數(shù)據(jù)進行操作。 一、商品加入購物車

    2024年02月10日
    瀏覽(19)
  • Vue項目商品購物車前端本地緩存邏輯(適用H5/ipad/PC端)——前端實現(xiàn)購物車刪除商品、購物車增減數(shù)量,清空購物車功能

    Vue項目商品購物車前端本地緩存邏輯(適用H5/ipad/PC端)——前端實現(xiàn)購物車刪除商品、購物車增減數(shù)量,清空購物車功能

    Vue3 + Vite + Ts開源后臺管理系統(tǒng)模板 基于ElementUi或AntdUI再次封裝基礎(chǔ)組件文檔 基于Element-plus再次封裝基礎(chǔ)組件文檔(vue3+ts)

    2024年02月12日
    瀏覽(31)
  • Vue項目(購物車)

    目錄 購物車效果展示: 購物車代碼: 購物車效果展示: 此項目添加、修改、刪除數(shù)據(jù)的地方都寫了瀏覽器都會把它存儲起來 下次運行項目時會把瀏覽器數(shù)據(jù)拿出來并在頁面展示 Video_20230816145047 購物車代碼: 復制完代碼,需改下script中引入的vue文件地址; 可直接使用

    2024年02月12日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包