当前位置:首页 > VUE

用vue实现菜单下单

2026-01-22 16:31:18VUE

Vue 实现菜单下单功能

数据结构设计

菜单数据通常以数组形式存储,每个菜品包含名称、价格、描述等信息:

data() {
  return {
    menuItems: [
      { id: 1, name: '红烧肉', price: 38, description: '经典家常菜' },
      { id: 2, name: '清蒸鱼', price: 48, description: '鲜嫩可口' }
    ],
    cart: []
  }
}

菜单展示组件

使用 v-for 渲染菜单列表,每个菜品添加加入购物车按钮:

<div v-for="item in menuItems" :key="item.id" class="menu-item">
  <h3>{{ item.name }}</h3>
  <p>{{ item.description }}</p>
  <span>¥{{ item.price }}</span>
  <button @click="addToCart(item)">加入购物车</button>
</div>

购物车功能实现

添加菜品到购物车的方法,处理重复菜品数量累加:

用vue实现菜单下单

methods: {
  addToCart(item) {
    const existingItem = this.cart.find(cartItem => cartItem.id === item.id)
    if (existingItem) {
      existingItem.quantity++
    } else {
      this.cart.push({ ...item, quantity: 1 })
    }
  }
}

购物车展示组件

显示已选菜品和总价,提供删除和调整数量功能:

<div class="cart">
  <div v-for="(item, index) in cart" :key="item.id">
    {{ item.name }} x {{ item.quantity }} = ¥{{ item.price * item.quantity }}
    <button @click="decreaseQuantity(index)">-</button>
    <button @click="increaseQuantity(index)">+</button>
    <button @click="removeItem(index)">删除</button>
  </div>
  <div>总计: ¥{{ totalPrice }}</div>
</div>

计算属性

计算购物车总价:

用vue实现菜单下单

computed: {
  totalPrice() {
    return this.cart.reduce((total, item) => {
      return total + (item.price * item.quantity)
    }, 0)
  }
}

下单功能

添加提交订单方法,可连接后端API:

methods: {
  submitOrder() {
    const order = {
      items: this.cart,
      total: this.totalPrice,
      timestamp: new Date()
    }
    // 实际项目中这里调用API接口
    console.log('提交订单:', order)
    this.cart = [] // 清空购物车
    alert('订单已提交')
  }
}

样式优化

添加基础CSS样式提升用户体验:

.menu-item {
  border: 1px solid #ddd;
  padding: 10px;
  margin: 10px;
  display: inline-block;
  width: 200px;
}
.cart {
  position: fixed;
  right: 0;
  top: 0;
  width: 300px;
  background: #f5f5f5;
  padding: 20px;
}

这个实现包含了菜单展示、购物车管理和订单提交的基本功能,可根据实际需求扩展更多特性如菜品分类、优惠计算等。

标签: 下单菜单
分享给朋友:

相关文章

css制作tab菜单

css制作tab菜单

CSS制作Tab菜单的方法 HTML结构 使用无序列表和div容器构建基础结构,列表项为标签页标题,div内放置对应内容块。 <ul class="tab-menu"> <l…

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 在 Vue 中实现菜单功能可以通过多种方式完成,以下是一些常见的方法: 使用 Vue Router 实现路由菜单 通过 Vue Router 可以轻松实现基于路由的菜单导航…

vue菜单实现

vue菜单实现

实现Vue菜单的基本方法 使用Vue.js创建菜单可以通过多种方式实现,包括使用原生Vue组件、第三方UI库或自定义解决方案。以下是几种常见的实现方法: 使用原生Vue组件 创建基本的菜单结构可以使…

jquery菜单

jquery菜单

以下是关于使用jQuery创建交互式菜单的几种常见方法及实现示例: 基础下拉菜单实现 通过jQuery的slideToggle和toggleClass实现简单下拉效果: $('.menu-it…

vue菜单tab实现

vue菜单tab实现

Vue 菜单 Tab 实现方法 使用动态组件切换内容 通过 Vue 的 component 动态组件结合 v-for 渲染菜单项,点击时切换显示内容: <template> <…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div cla…