使用Vue.js框架的指令和事件綁定實現一個購物車的頁面布局

  • 使用了v-model指令來實現全選/全不選的功能,當全選框被點擊時,isAllChecked的值會被改變。
  • 使用了v-if指令來判斷購物車中是否有商品,如果有商品則渲染商品列表,否則顯示購物車為空的提示。
  • 使用了v-for指令來遍歷datalist數組,渲染每個商品項。
  • 使用了@change事件來監聽商品項的選擇狀態改變,當商品項被選中或取消選中時,handleItemChange方法會被調用。
  • 使用了@click事件來監聽減少數量和增加數量按鈕的點擊事件,分別調用item.number–和item.number++來改變商品數量。
  • 使用了:disable屬性綁定來控制減少數量和增加數量按鈕的禁用狀態。
  • 使用了@click事件來監聽刪除按鈕的點擊事件,調用handleDel方法來刪除對應的商品項
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>Document</title><script src="vue.js"></script><style>li {display: flex;justify-content: space-between;align-items: center;padding: 10px;border: 1px solid red;}li img {width: 100px;}</style></head><body><div id="box"><ul><li><inputtype="checkbox"v-model="isAllChacked"@click="handleAllChange"/><span>全選/全不選</span></li><template v-if="datalist.length"><li v-for="(item,index) in datalist" :key="item.id"><div><inputtype="checkbox"v-model="checkList":value="item"@change="handleItemChange"/></div><div><img :src="item.poster" alt="" /></div><div><div>{{item.title}}</div><div style="color: red">價格:{{item.price}}</div></div><div><button @click="item.number--" :disable="item.number===1">-</button>{{item.number}}<button@click="item.number++":disable="item.number===item.limit">+</button></div><div><button @click="handleDel(index,item.id)">刪除</button></div></li></template><li v-else>購物車空空如也</li><li><div>總金額:{{sum()}}</div></li></ul></div><script>var obj = {data() {return {isAllChecked: false,chackList: [],datalist: [{id: 1,title: "商品1",price: 10,number: 1,poster:"https://gw.alicdn.com/bao/uploaded/i3/698598873/O1…wOdNnz2FPt9klYrZk_!!0-item_pic.jpg_300x300q90.jpg",limit: 5,},{id: 2,title: "商品2",price: 20,number: 2,poster:"	https://t8.baidu.com/it/u=4043579294,4057690895&fm…sec=1692118800&t=acd1394b1a053e97133a40c0289677f9",limit: 6,},{id: 3,title: "商品3",price: 30,number: 3,poster:"https://gw.alicdn.com/bao/uploaded/i3/698598873/O1…wOdNnz2FPt9klYrZk_!!0-item_pic.jpg_300x300q90.jpg",limit: 7,},],};},methods: {sum() {return this.checkList.reduce((total, item) => total + item.price * item.number,0);},handleDel(index, id) {this.datalist.splice(index, 1);//同步更新數組this.chackList = this.chackList.filter((item) => item.id !== id);this.handleItemChange();},handleAllChange() {this.chackList = this.isAllChecked ? this.datalist : [];},handleItemChange() {if (this.datalist.length === 0) {this.isAllChecked = false;return;}this.isAllChecked = this.checkList.length === this.datalist.length;},},};var app = Vue.createApp(obj).mount("#box");</script></body>
</html>

methods部分的方法如下:

  • sum()方法用于計算購物車中商品的總金額。通過使用reduce()方法遍歷checkList數組,累加每個商品的價格乘以數量,最終返回總金額。
  • handleDel(index, id)方法用于處理刪除商品的邏輯。通過使用splice()方法從datalist數組中刪除指定索引的商品項,然后使用filter()方法從checkList數組中過濾掉對應的商品項,以保持兩個數組的同步。最后調用handleItemChange()方法更新全選框的狀態。
  • handleAllChange()方法用于處理全選框的改變邏輯。當全選框被點擊時,如果全選框被選中,則將datalist數組賦值給checkList數組,表示所有商品被選中;如果全選框未被選中,則將checkList數組清空,表示所有商品都未被選中。
  • handleItemChange()方法用于處理商品項選擇狀態的改變邏輯。當商品項的選擇狀態發生改變時,如果datalist數組為空,則將全選框的狀態設置為未選中;否則,將全選框的狀態設置為checkList數組的長度與datalist數組長度相等時表示全選,否則表示未全選。

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

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

相關文章

jvm內存溢出排查(使用idea自帶的內存泄漏分析工具)

文章目錄 1.確保生成內存溢出文件2.使用idea自帶的內存泄漏分析工具3.具體實驗一下 1.確保生成內存溢出文件 想分析堆內存溢出&#xff0c;一定在運行jar包時就寫上參數-XX:HeapDumpOnOutOfMemoryError&#xff0c;可以看我之前關于如何運行jar包的文章。若你沒有寫。可以寫上…

Keepalived入門指南:實現故障轉移和負載均衡

文章目錄 一、簡介1. Keepalived概述2. 高可用性和負載均衡的重要性 二、故障轉移1. 什么是故障轉移2. Keepalived的故障轉移原理a) VRRP協議b) 虛擬路由器ID和優先級 3. 配置Keepalived實現故障轉移a) 主備服務器的設置b) 監控網絡接口c) 虛擬IP的配置d) 備份服務器接管流程 三…

Python學習筆記_基礎篇(九)_面向對象編程

本篇內容: 1、反射2、面向對象編程3、面向對象三大特性4、類成員5、類成員修飾符6、類的特殊成員7、單例模式 反射 python中的反射功能是由以下四個內置函數提供&#xff1a;hasattr、getattr、setattr、delattr&#xff0c;改四個函數分別用于對對象內部執行&#xff1a;檢…

el-form自定義校驗規則

Vue 的 el-form 組件可以使用自定義校驗規則進行表單驗證。自定義校驗規則可以通過傳遞一個函數來實現&#xff0c;該函數接受要校驗的字段的值作為參數&#xff0c;并返回一個布爾值或一個 Promise 對象。 下面是一個示例&#xff0c;演示如何在 el-form 中使用自定義校驗規則…

若依前端npm run dev啟動時報錯

本文主要解決問題:若依前端npm run dev啟動時報錯,解決辦法。 目錄 1、第1種解決方案(親測有效) 2、第2種解決方案(親測有效) Error: error:0308010C:digital envelope routines::unsupportedat new Hash (node:internal/crypto/hash:67:19)at Object.createHash (node…

解決 adb install 錯誤INSTALL_FAILED_UPDATE_INCOMPATIBLE

最近給游戲出包&#xff0c;平臺要求 v1 簽名吧&#xff0c;AS 打包后&#xff0c;adb 執行安裝到手機&#xff0c;我用的設備是google pixel6 , android 系統 13&#xff0c; 提示如下&#xff1a; adb install -r v5_android_202308161046.apk Performing Streamed Install a…

centos 安裝.net 6 sdk

按照以下步驟在 CentOS 上安裝 .NET 6 SDK&#xff1a; 更新系統&#xff1a; sudo yum update安裝依賴項&#xff1a; sudo yum install -y curl libunwind libicu下載并添加 Microsoft 的軟件包存儲庫密鑰&#xff1a; sudo rpm -Uvh https://packages.microsoft.com/config/…

單片機第一季:零基礎13——AD和DA轉換

1&#xff0c;AD轉換基本概念 51 單片機系統內部運算時用的全部是數字量&#xff0c;即0 和1&#xff0c;因此對單片機系統而言&#xff0c;無法直接操作模擬量&#xff0c;必須將模擬量轉換成數字量。所謂數字量&#xff0c;就是用一系列0 和1 組成的二進制代碼表示某個信號大…

Linux -- 進階 Autofs自動掛載服務 實驗詳解

服務端創建共享目錄&#xff0c; 客戶端實現自動掛載 第一步 &#xff1a; 客戶端&#xff0c;服務端 均關閉安全軟件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootnode1 ~]# setenforce 0 [rootnode1 ~]# systemctl stop firewalld 第二…

在K8s上處理nginx

基本說明 創建一個名為ssl的TLS類型的Secret對象&#xff0c;用于存儲證書和密鑰信息。 kubectl create secret tls ssl --certserver.crt --keyserver.key配置Nginx的events塊&#xff0c;設置worker連接數為1024。 events {worker_connections 1024; }配置Nginx的http塊&a…

MyBaits(單獨使用,與整合無關)小白版

文章目錄 概述比較配置寫xml加載上面配置并執行加載配置的方法方式一 執行方法方式一方式二(MyBatis映射器) 寫配置文件的映射文件設置對象的別名&#xff08;簡寫&#xff09;獲取自動生成的主鍵 查詢結果和java的映射規則基本類型映射&#xff1a;簡單對象映射&#xff1a;嵌…

加鹽加密算法

MD5加密加鹽加密項目密碼升級 MD5加密 MD5一系列公式進行復雜數學運算&#xff1b;特點&#xff1a;&#xff08;用途校驗和、計算hash值方式、加密&#xff09; 1&#xff1a;定長&#xff1b;無論原始數據多長&#xff1b;算出的結果都是4或者8字節的版本。 2&#xff1a;沖…

Java多線程實戰

Java多線程實戰 java多線程&#xff08;超詳細&#xff09; java自定義線程池總結 Java創建線程方式 方法1&#xff0c;繼承Thread類 方法2&#xff0c;實現Runable接口 方法2-2&#xff0c;匿名內部類形式lambda表達式 方法3&#xff0c;實現Callable接口&#xff0c;允許…

【深入理解Linux內核鎖】三、原子操作

我的圈子: 高級工程師聚集地 我是董哥,高級嵌入式軟件開發工程師,從事嵌入式Linux驅動開發和系統開發,曾就職于世界500強企業! 創作理念:專注分享高質量嵌入式文章,讓大家讀有所得! 文章目錄 1、原子操作思想2、整型變量原子操作2.1 API接口2.2 API實現2.2.1 原子變量結…

Shell 函數

Shell 函數 linux shell 可以用戶定義函數&#xff0c;然后在shell腳本中可以隨便調用。 shell中函數的定義格式如下&#xff1a; [ function ] funname [()] { action; [return int;] } 說明&#xff1a; 1、可以帶function fun() 定義&#xff0c;也可以直接fun…

log4j:WARN No appenders could be found for logger問題

本文將idea場景下的使用。 IDEA中&#xff0c;將配置文件命名為log4j.properties&#xff08;該命名才會被自動加載&#xff09;&#xff0c; 并放到某個目錄下&#xff08;通常放到resources目錄&#xff09;&#xff0c;并在resources上右鍵&#xff0c;找到Mark Directory a…

微信程序 自定義遮罩層遮不住底部tabbar解決

一、先上效果 二 方法 1、自定義底部tabbar 實現&#xff1a; https://developers.weixin.qq.com/miniprogram/dev/framework/ability/custom-tabbar.html 官網去抄 簡單寫下&#xff1a;在代碼根目錄下添加入口文件 除了js 文件的list 需要調整 其他原封不動 代碼&#xf…

Hadoop數據遷移distcp

Hadoop數據遷移distcp 準備工作 確認源集群&#xff08;a&#xff09;,目標集群&#xff08;b&#xff09;確認a集群的主節點和b集群的主節點確認兩個集群的網絡相通確認遷移模式&#xff08;全量遷移還是增量遷移&#xff09;&#xff0c;這里選擇全量遷移 遷移文件 遷移t…

【路由協議】使用按需路由協議和數據包注入的即時網絡模擬傳遞率(PDR)、總消耗能量和節點消耗能量以及延遲研究(Matlab代碼實現)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;歡迎來到本博客????&#x1f4a5;&#x1f4a5; &#x1f3c6;博主優勢&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客內容盡量做到思維縝密&#xff0c;邏輯清晰&#xff0c;為了方便讀者。 ??座右銘&a…

斯坦福「小鎮」開源AI智能體;小米應用商店將要求AI應用符合資質標準

&#x1f989; AI新聞 &#x1f680; 斯坦福「小鎮」開源AI智能體 摘要:斯坦福研究人員開源了一個類似《西部世界》的數字化「小鎮」,里面有25個AI智能體可以生活、工作、社交。這項研究被視為AGI的重要開端,可能會改變游戲、企業應用領域。網友期待這項技術改善游戲NPC的交互…