uni-app 模仿美团下单购物车插件需求

发布于 1周前 作者 bupafengyu 来自 Uni-App

uni-app 模仿美团下单购物车插件需求

任务描述

模仿美团购物车,实现添加数量 实现三联动。点击菜单的加减跟购物车里面的加减实现连动

image

2019-04-11 11:57

1 回复

当然,针对uni-app模仿美团下单购物车插件的需求,以下是一个简化的购物车功能实现代码示例。这个示例将展示如何管理购物车中的商品,包括添加、删除和更新商品数量。

首先,我们假设有一个商品列表,每个商品有一个唯一的ID、名称和价格。购物车将存储这些商品的ID和对应的数量。

商品列表数据(mock data)

const products = [
    { id: 1, name: '商品A', price: 100 },
    { id: 2, name: '商品B', price: 200 },
    { id: 3, name: '商品C', price: 300 },
];

购物车管理逻辑

export default {
    data() {
        return {
            cart: [], // 存储购物车的商品ID和数量
            products: products, // 商品列表
        };
    },
    methods: {
        // 添加商品到购物车
        addToCart(productId, quantity = 1) {
            let cartItem = this.cart.find(item => item.id === productId);
            if (cartItem) {
                cartItem.quantity += quantity;
            } else {
                this.cart.push({ id: productId, quantity });
            }
        },
        // 从购物车中移除商品
        removeFromCart(productId) {
            this.cart = this.cart.filter(item => item.id !== productId);
        },
        // 更新购物车中商品的数量
        updateCartQuantity(productId, quantity) {
            let cartItem = this.cart.find(item => item.id === productId);
            if (cartItem) {
                cartItem.quantity = quantity;
            }
        },
        // 计算购物车总价
        calculateTotalPrice() {
            return this.cart.reduce((total, item) => {
                const product = this.products.find(p => p.id === item.id);
                return total + (product.price * item.quantity);
            }, 0);
        },
    },
};

示例页面模板

<template>
    <view>
        <block v-for="product in products" :key="product.id">
            <view>
                {{ product.name }} - ¥{{ product.price }}
                <button @click="addToCart(product.id)">添加到购物车</button>
            </view>
        </block>
        
        <view>购物车总价: ¥{{ calculateTotalPrice() }}</view>
        <view>购物车内容:</view>
        <block v-for="item in cart" :key="item.id">
            <view>
                {{ products.find(p => p.id === item.id).name }} - 数量: {{ item.quantity }}
                <button @click="removeFromCart(item.id)">移除</button>
                <button @click="updateCartQuantity(item.id, item.quantity + 1)">+1</button>
                <button @click="updateCartQuantity(item.id, Math.max(item.quantity - 1, 0))">-1</button>
            </view>
        </block>
    </view>
</template>

以上代码展示了如何在uni-app中实现一个简单的购物车插件,包括添加、删除和更新商品数量的功能,以及计算购物车总价。你可以根据实际需求进一步扩展和优化这些功能。

回到顶部