首页 > 其他分享 >vue3+ts购物车demo

vue3+ts购物车demo

时间:2024-05-23 23:28:41浏览次数:16  
标签:const demo selected ts value 购物车 item cartItems quantity

<template>
  <div>
    <h1>Shopping Cart</h1>
    
    <button @click="addItem">Add Item</button>
    <button @click="deleteSelectedItems">Delete Selected Items</button>
    <button @click="clearCart">Clear Cart</button>
    <button @click="selectAll">Select All</button>
    <button @click="toggleSelectAll">Toggle Select All</button>
    
    <table>
      <thead>
        <tr>
          <th><input type="checkbox" v-model="selectAllStatus"></th>
          <th>Item</th>
          <th>Quantity</th>
          <th>Action</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="(item, index) in cartItems" :key="item.id">
          <td><input type="checkbox" v-model="item.selected"></td>
          <td>{{ item.name }}</td>
          <td>{{ item.quantity }}</td>
          <td>
            <button @click="increaseQuantity(index)">+</button>
            <button @click="decreaseQuantity(index)">-</button>
            <button @click="deleteItem(index)">Delete</button>
          </td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue';

interface CartItem {
  id: number;
  name: string;
  quantity: number;
  selected: boolean;
}

const cartItems = ref<CartItem[]>([
  { id: 1, name: 'Item 1', quantity: 1, selected: false },
  { id: 2, name: 'Item 2', quantity: 2, selected: false },
  { id: 3, name: 'Item 3', quantity: 3, selected: false },
]);

const selectAllStatus = ref(false);

const addItem = () => {
  const newItem = {
    id: cartItems.value.length + 1,
    name: `Item ${cartItems.value.length + 1}`,
    quantity: 1,
    selected: false,
  };
  cartItems.value.push(newItem);
}

const deleteItem = (index: number) => {
  cartItems.value.splice(index, 1);
}

const deleteSelectedItems = () => {
  cartItems.value = cartItems.value.filter(item => !item.selected);
}

const clearCart = () => {
  cartItems.value = [];
}

const selectAll = () => {
  cartItems.value.forEach(item => item.selected = true);
}

const toggleSelectAll = () => {
  selectAllStatus.value = !selectAllStatus.value;
  cartItems.value.forEach(item => item.selected = selectAllStatus.value);
}

const increaseQuantity = (index: number) => {
  cartItems.value[index].quantity++;
}

const decreaseQuantity = (index: number) => {
  if (cartItems.value[index].quantity > 1) {
    cartItems.value[index].quantity--;
  }
}
</script>

标签:const,demo,selected,ts,value,购物车,item,cartItems,quantity
From: https://blog.csdn.net/qq_45914628/article/details/139104090

相关文章

  • PowerShell 中重置SQL SERVER数据库的 SA(System Administrator)密码可以通过 SQL Serve
    PowerShell中重置数据库的SA(SystemAdministrator)密码可以通过SQLServerManagementObjects(SMO)来完成。以下是一个基本的PowerShell脚本,可以用来重置SA用户的密码:powershellCopyCode#导入SQLServer模块Import-ModuleSQLPS-DisableNameChecking#设置SQL......
  • HDLBits/状态机笔记
    `moduletop_module(inputclk,inputx,outputz);reg[2:0]s_cur;reg[2:0]s_nex;//传递状态always@(posedgeclk)begins_cur<=s_nex;end//确定下一状态always@()begincase(s_cur)3'b000:case(x)0:s_nex=3'b100;1:s_nex=3'b111;endcase3�......
  • TS类,接口,泛型的简介
    //1.类的属性和方法classDog{name:string="旺财";age:number=2;shout(){console.log("汪汪汪")}}letdog=newDog()//2.类的构造函数(用于给类中的属性设定初始值,在创建类的实例时会被触发)classCat{name:string;ag......
  • 不闭合三维TSP:成长优化算法GO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB
    一、旅行商问题旅行商问题(Travelingsalesmanproblem,TSP)是一个经典的组合优化问题,它可以描述为一个商品推销员去若干城市推销商品,要求遍历所有城市后回到出发地,目的是选择一个最短的路线。当城市数目较少时,可以使用穷举法求解。而随着城市数增多,求解空间比较复杂,无法使......
  • 不闭合三维TSP:蛇优化算法SO求解不闭合三维TSP(起点固定,终点不定,可以更改数据集),MATLAB代
    一、旅行商问题旅行商问题(Travelingsalesmanproblem,TSP)是一个经典的组合优化问题,它可以描述为一个商品推销员去若干城市推销商品,要求遍历所有城市后回到出发地,目的是选择一个最短的路线。当城市数目较少时,可以使用穷举法求解。而随着城市数增多,求解空间比较复杂,无法使......
  • Flutter笔记:Widgets Easier组件库-使用隐私守卫
    Flutter笔记WidgetsEasier组件库:使用隐私守卫-文章信息-Author:李俊才(jcLee95)VisitmeatCSDN:https://jclee95.blog.csdn.netMyWebSite:http://thispage.tech/Email:[email protected]:https://blog.csdn.net......
  • Android JNI/NDK环境的配置与Demo编译
    一、背景​JNI(JavaNativeInterface)和NDK(NativeDevelopmentKit)在Android开发中扮演着重要的角色。JNI,即Java本地接口,是Java平台的一部分,它允许Java代码与其他语言写的代码进行交互。通过JNI,Java代码可以调用本地应用程序或库中的代码,也可以被本地代码调用。这主要使得......
  • HTSM的质量标准维度
    功能性(Capability):系统功能是否正确,是否满足了用户需求?可靠性(Reliability):在任何情况下是否都可以正常工作?健壮性(容错性):系统在出现故障时,是否能够自动恢复或者忽略故障继续运行。错误处理:产品在出现坏数据的情况下能够抵抗失败,在失败时能保持优雅,并易于恢复。(在失败时,也能够给出准确......
  • PhiData 一款开发AI搜索、agents智能体和工作流应用的AI框架
    引言在人工智能领域,构建一个能够理解并响应用户需求的智能助手是一项挑战性的任务。PhiData作为一个开源框架,为开发者提供了构建具有长期记忆、丰富知识和强大工具的AI助手的可能性。本文将介绍PhiData的核心优势、应用示例以及如何使用PhiData来构建自己的AI助手。PhiData的设......
  • ts_01_数据类型
    /***typeScript学习1数据类型*number数字类型*string字符串类型*boolean布尔类型*Array数组*Tuple元组*enum枚举*Any任意类型*void无任何类型*null空类型*undefined未定义类型*......