当前位置:首页 > VUE

vue实现点菜加减

2026-02-18 16:58:36VUE

实现点菜加减功能

在Vue中实现点菜加减功能,可以通过数据绑定和事件处理来完成。以下是一个完整的实现示例:

创建Vue实例和数据

new Vue({
  el: '#app',
  data: {
    dishes: [
      { id: 1, name: '鱼香肉丝', price: 28, count: 0 },
      { id: 2, name: '宫保鸡丁', price: 32, count: 0 },
      { id: 3, name: '水煮鱼', price: 45, count: 0 }
    ]
  },
  methods: {
    increment(index) {
      this.dishes[index].count++
    },
    decrement(index) {
      if (this.dishes[index].count > 0) {
        this.dishes[index].count--
      }
    }
  },
  computed: {
    totalPrice() {
      return this.dishes.reduce((sum, dish) => sum + dish.price * dish.count, 0)
    }
  }
})

HTML模板

<div id="app">
  <div v-for="(dish, index) in dishes" :key="dish.id" class="dish-item">
    <span>{{ dish.name }} - ¥{{ dish.price }}</span>
    <button @click="decrement(index)">-</button>
    <span>{{ dish.count }}</span>
    <button @click="increment(index)">+</button>
  </div>
  <div class="total">
    总计: ¥{{ totalPrice }}
  </div>
</div>

CSS样式

.dish-item {
  margin: 10px;
  padding: 10px;
  border: 1px solid #ddd;
  display: flex;
  align-items: center;
}

.dish-item button {
  width: 30px;
  height: 30px;
  margin: 0 5px;
}

.total {
  margin-top: 20px;
  font-size: 18px;
  font-weight: bold;
}

功能说明

  • 使用v-for指令循环渲染菜品列表
  • 每个菜品包含名称、价格和数量
  • 点击+按钮增加数量,点击-按钮减少数量
  • 计算属性totalPrice实时计算总价
  • 数量不会减少到负数以下

扩展功能

可以添加更多功能来完善点菜系统:

vue实现点菜加减

// 添加清空功能
methods: {
  clearAll() {
    this.dishes.forEach(dish => dish.count = 0)
  }
}

// 添加提交订单功能
methods: {
  submitOrder() {
    const selectedDishes = this.dishes.filter(dish => dish.count > 0)
    if (selectedDishes.length === 0) {
      alert('请至少选择一道菜')
      return
    }
    // 发送订单数据到服务器
    console.log('提交订单:', selectedDishes)
  }
}

标签: 加减vue
分享给朋友:

相关文章

vue怎么实现文件树

vue怎么实现文件树

Vue 实现文件树的方法 使用递归组件 递归组件是处理嵌套数据结构的理想方式。文件树通常包含文件夹和文件的嵌套结构,适合用递归组件实现。 <template> <ul>…

vue实现功能

vue实现功能

Vue 功能实现方法 Vue.js 是一个渐进式 JavaScript 框架,用于构建用户界面。以下是实现常见功能的几种方法: 数据绑定与响应式更新 在 Vue 中,数据绑定通过 v-model…

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue源码实现

vue源码实现

Vue 源码实现解析 Vue.js 的核心实现可以分为响应式系统、虚拟 DOM、模板编译、组件化等几个关键部分。以下是对这些核心机制的详细解析。 响应式系统 Vue 的响应式系统基于 Object.…

vue广播实现

vue广播实现

vue广播实现 在Vue中实现广播功能可以通过事件总线(Event Bus)或Vuex来完成。以下是两种常见的实现方式: 使用事件总线(Event Bus) 事件总线是一种简单的跨组件通信方式,适用…

vue弹幕实现

vue弹幕实现

Vue弹幕实现方法 弹幕功能常见于视频直播或评论区,以下是基于Vue的实现方案,涵盖基础弹幕、动画控制及性能优化。 基础弹幕渲染 通过v-for动态渲染弹幕列表,结合CSS实现横向移动效果。…