14-案例:購物車

?綜合案例-購物車

需求說明:

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

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

? ? ? ? 2. 刪除功能

? ? ? ? ? ? ? ? 點擊傳參 filter過濾覆蓋原數組

? ? ? ? 3. 修改個數

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

? ? ? ? 4. 全選反選

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

? ? ? ? 5. 統計 選中的 總價 和 數量

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

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

? ? ? ? ? ? ? ? watch監聽,localStorage, JSON.stringfiy, JSON.parse

<!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><!-- 結算按鈕 --><button>結算({{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: {// 水果列表,從本地緩存讀取,|| []: 初始值,一般都是空數組fruitList:  JSON.parse(localStorage.getItem("list")) || defaultArr,},computed: {// 默認計算屬性:只能獲取不能設置,要設置需要寫完整的寫法// isAll(){//     // 必須所有的小選框都選中,全選按鈕才選中 -> every//     return  this.fruitList.every(item => item.isChecked === true)// }// 完整寫法 = get + setisAll:{get(){return  this.fruitList.every(item => item.isChecked === true)},set(value){// 基于拿到的布爾值,要讓所有的小選框,同步狀態this.fruitList.forEach(item => item.isChecked = value)}},// 統計選中的總數 reducetotalCount(){return this.fruitList.reduce((sum,item) => {if (item.isChecked){// 選中 -> 需要累加return sum + item.num}else{// 沒選中 -> 不需要累加return sum}},0)},// 統計選中的總價 num * pricetotalPrice(){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. 根據ID找到數組中的對應項 -> findconst fruit = this.fruitList.find(item => item.id === id)//2. 操作 num 數量fruit.num--},add(id) {// 1. 根據ID找到數組中的對應項 -> findconst fruit = this.fruitList.find(item => item.id === id)//2. 操作 num 數量fruit.num++}},// 緩存到本地watch:{fruitList:{deep: true,handler(newValue){// 需要將變化后的 newValue 存入本地 (轉json)localStorage.setItem("list",JSON.stringify(newValue))}}}})</script></body></html>

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/41898.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/41898.shtml
英文地址,請注明出處:http://en.pswp.cn/news/41898.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

電子商務公開密鑰加密法

(一)定義與應用原理 公開密鑰加密法是針對私有密鑰加密法的缺陷而提出來的。是電子商務應 用的核心密碼技術。所謂公開密鑰加密&#xff0c;就是指在計算機網絡上甲、乙兩用戶之間 進行通信時&#xff0c;發送方甲為了保護要傳輸的明文信息不被第三方竊取&#xff0c;采用密…

從零基礎到精通IT:探索高效學習路徑與成功案例

文章目錄 導語&#xff1a;第一步&#xff1a;明確學習目標與方向選擇適合的IT方向設定具體的學習目標咨詢和調研 第二步&#xff1a;系統學習基礎知識選擇適合的編程語言學習數據結構和算法掌握操作系統和計算機網絡基礎 第三步&#xff1a;實踐項目鍛煉技能選擇合適的項目編寫…

聊一下操作系統 macOS 與 Linux

對于Windows操作系統大家都比較熟悉&#xff0c;也常拿它與Linux操作系統進行比較&#xff0c;兩者之間的差異也很明顯。但對于macOS 和 Linux的比較不太多&#xff0c;很多人認為它們很相似&#xff0c;因為這兩種操作系統都可以運行 Unix 命令。其實詳細比較下&#xff0c;兩…

Redis——哨兵模式(docker部署redis哨兵)+緩存穿透和雪崩

哨兵模式 自動選取主機的模式。 概述 主從切換技術的方法是:當主服務器宕機后&#xff0c;需要手動把一臺從服務器切換為主服務器&#xff0c;這就需要人工干預&#xff0c;費事費力&#xff0c;還會造成段時間內服務不可用。這不是一種推薦的方式&#xff0c;更多時候&…

前端開發怎么解決性能優化的問題? - 易智編譯EaseEditing

前端性能優化是確保網站或應用在加載速度、響應性和用戶體驗等方面達到最佳狀態的關鍵任務。以下是一些解決前端性能優化問題的方法&#xff1a; 壓縮和合并代碼&#xff1a; 壓縮和合并CSS、JavaScript和HTML文件可以減少文件大小&#xff0c;加快加載速度。使用壓縮工具&am…

【Linux】Linux下常用查看文件指令小結

0x00 前言 版本信息&#xff1a;Ubuntu 18.04.6 LTS 最后更新日期&#xff1a;2023.8.18 0x01 Linux下常用查看文件指令小結 cat file &#xff1a;顯示文件內容&#xff0c;支持-n選項&#xff0c;即cat -n file&#xff0c;表示加行號顯示文件內容&#xff0c;不過不適合看…

vue vs react

vue 簡介&#xff1a;漸進式 JavaScript 框架 來源&#xff1a;最初由 Evan You &#xff08;尤雨溪&#xff09;于2014年開發。Evan You之前在Google研究過AngularJS&#xff0c;并提取了Angular的部分特性以提供一個更輕量級的框架 版本&#xff1a; vue 1x&#xff1a;2014…

協同過濾推薦算法-基于Django+mysql的智能水果銷售系統設計(可做計算機畢設)

隨著科技的不斷發展&#xff0c;智能化已經成為各行各業的趨勢&#xff0c;水果銷售行業也不例外。智能水果銷售系統就是應運而生的一種智能化解決方案&#xff0c;它可以為用戶提供更加便捷、高效的購物體驗。其中&#xff0c;系統模塊是智能水果銷售系統的重要組成部分。 系…

tsconfig.json

概念 tsconfig.json所在位置是ts項目的根目錄&#xff0c;他的主要作用是自定義配置不同的選項來告訴編譯器如何編譯當前項目。 重要屬性 compilerOptions - 主要用來配置目標js版本&#xff08;target&#xff09;、模塊解析方式&#xff08;moudle&#xff09;、輸出目錄&am…

python實現文字轉語音

文字轉語音 簡介 pyttsx3是一個Python庫&#xff0c;用于文字轉語音的功能。它可以將文本轉換為語音&#xff0c;并使用不同的音頻引擎進行輸出。這個教程將向您介紹如何使用pyttsx3來創建自定義的語音應用程序。 安裝 使用以下命令安裝pyttsx3庫&#xff1a; pip install…

unet pytorch

1.單機多卡版本&#xff1a;代碼中的DistributedDataParallel (DDP) 部分對應單機多卡的分布式訓練方式 import torch import torch.nn as nn import torch.optim as optim import torch.nn.functional as F from torch.utils.data import Dataset, DataLoader from torchvisi…

ArcPy將矢量屬性表批量轉換為Excel文件

要使用ArcPy將矢量屬性表批量轉換為Excel文件&#xff0c;可以按照以下步驟進行操作&#xff1a; 1. 導入所需的Python庫&#xff1a; import arcpy import pandas as pd 2. 設置工作空間和要素類路徑&#xff1a;將arcpy.env.workspace設置為包含要素類的工作空間路徑&…

【Apollo學習筆記】—— Planning模塊

前言 本文記錄學習planning模塊時的一些筆記&#xff0c;總體流程參照https://zhuanlan.zhihu.com/p/61982682中的流程圖&#xff0c;如上圖所示。 planning_component modules/planning/planning_component.cc PlanningComponent::Init部分首先完成規劃模式的選擇&#xff…

【Linux】POSIX信號量和基于環形隊列的生產消費者模型

目錄 寫在前面的話 什么是POSIX信號量 POSIX信號量的使用 基于環形隊列的生產消費者模型 寫在前面的話 本文章主要先介紹POSIX信號量&#xff0c;以及一些接口的使用&#xff0c;然后再編碼設計一個基于環形隊列的生產消費者模型來使用這些接口。 講解POSIX信號量時&#x…

記K8S集群工作節點,AnolisOS 8.6部署顯卡驅動集成Containerd運行時

1、安裝gcc #安裝編譯環境 yum -y install make gcc gcc-c2、下載顯卡驅動 點擊 直達連接 nvidia高級搜索下載歷史版本驅動程序&#xff08;下載歷史版本驅動&#xff09; https://www.nvidia.cn/Download/Find.aspx?langcn3、安裝驅動 安裝顯卡驅動 ./NVIDIA-Linux-x86…

windows結束explorer進程后桌面白屏解決

背景 結束進程時一不小心一起刪掉explorer.exe &#xff0c;這個文件結束桌面就一片白 &#xff0c; 解決&#xff1a; 不要關機&#xff0c;同時按鍵盤上ctrlshiftesc ,重新進入任務管理器&#xff0c;接著點“進程”選項&#xff0c;按左上角文件選項&#xff0c;進入下拉菜單…

備份或同步數據?跨國大文件傳輸的不同需求與解決方案

信息化時代的到來&#xff0c;使得許多個人、組織、企業在日常生活中都需要對數據進行備份或同步。但不同的應用場景和需求&#xff0c;也需要不同的備份和同步方式。而在跨國大文件傳輸方面&#xff0c;更是需要根據不同需求選擇合適的傳輸方案。下面將分別介紹備份與同步數據…

BeanFactoryApplicationContext之間的關系

1**.BeanFactory與ApplicationContext之間的關系** &#xff08;1&#xff09;從繼承關系上來看&#xff1a; ? BeanFactory它是ApplicationContext 的父接口 &#xff08;2&#xff09;從功能上來看&#xff1a; ? BeanFactory才是spring中的核心容器&#xff0c;而Appli…

設備管理是什么意思?

設備管理 使組織能夠管理和維護設備&#xff0c;包括虛擬機、物理計算機、移動設備和 IoT 設備。 設備管理是任何組織安全策略的關鍵組成部分。 它有助于確保設備安全、最新且符合組織策略&#xff0c;目的是保護公司網絡和數據免受未經授權的訪問。 由于組織支持遠程和混合員…

MySQL 奇遇記三則

公司新項目&#xff0c;要使用 MySQL 數據庫。 第一次使用 MySQL&#xff0c;有點小激動。聽說過 N 多次&#xff0c;這一次終于用上了。 為什么是奇遇記&#xff1f; 因為在網上幾乎搜索不到別人遇到和我一樣的問題。 系統 &#xff1a;WINDOWS10X64 中文版 數據庫&#xf…