前端el-button绑定事件


<div class="dish-information">
          <div id="box" v-for="dish in dishes":key="dish.dish_id" class="dish-information-area">
            <div class="dish-information-img">
              <img id="dish-img" v-bind:src="dish.dish_img_url">
            </div>
            <div class="dish-information-nameandprice">
              <div class="dish-name">{{dish.name}}</div>
              <div class="dish-price">{{dish.price}}</div>
            </div>
            <div class="dish-information-button">
              <el-button @click="buy"  v-bind:id="'button'+dish.dish_id" type="primary" round>点击下单</el-button>
            </div>
          </div>
          </div>

如上,这样的一堆el-button该怎样绑定事件,事件该咋实现。我想的就是点击后弹出一个小框,选择份数,辣度,备注等,再点击确定下单,同时这个按键对应的dish_id连同这些传到后端

基于Monster 组和GPT的调写:

可以在Vue实例中定义一个buy方法,并在el-button中使用@click="buy(dish.dish_id)"来绑定该方法,并传递当前dish.dish_id作为参数。

在该buy方法中,你可以使用Vue.js的el-dialog组件来弹出一个小窗口来选择份数、辣度、备注等信息。同时,你可以将所需的参数存储在Vue实例的data属性中,当用户点击“确定”按钮时,将这些参数一并发送给后端进行处理。

下面是一个简单的示例:


<template>
  <div>
    <div v-for="dish in dishes" :key="dish.dish_id">
      <el-button @click="buy(dish.dish_id)">点击下单</el-button>
    </div>
    <el-dialog :visible.sync="showDialog">
      <el-input v-model="quantity" placeholder="请输入份数"></el-input>
      <el-input v-model="spiciness" placeholder="请输入辣度"></el-input>
      <el-input v-model="remark" placeholder="请输入备注"></el-input>
      <el-button @click="confirmOrder">确定下单</el-button>
    </el-dialog>
  </div>
</template>

<script>
export default {
  data() {
    return {
      dishes: [],
      showDialog: false,
      selectedDishId: null,
      quantity: null,
      spiciness: null,
      remark: null,
    }
  },
  methods: {
    buy(dishId) {
      this.selectedDishId = dishId
      this.showDialog = true
    },
    confirmOrder() {
      // Send selectedDishId, quantity, spiciness, and remark to backend
      // ...
      // Hide dialog
      this.showDialog = false
    },
  },
}
</script>

可以在Vue中使用@click或者@click.native绑定事件,例如:

<el-button @click="buy(dish.dish_id)" v-bind:id="'button'+dish.dish_id" type="primary" round>点击下单</el-button>

在methods中定义buy方法,接收一个参数dish_id,然后弹出一个小框,选择份数,辣度,备注等,再点击确定下单。在确定下单时,可以将dish_id、份数、辣度、备注等信息一起传到后端进行处理。例如:

methods: {
  buy(dish_id) {
    // 弹出小框,选择份数,辣度,备注等
    // 点击确定下单,将dish_id、份数、辣度、备注等信息一起传到后端进行处理
  }
}

该回答采用chatgpt

要为el-button绑定一个事件,可以使用 @click 指令来处理点击事件,例如:

html
<el-button @click="buy(dish.dish_id)">点击下单</el-button>
在这个例子中, 我们通过 @click 指令将 buy 函数绑定到按钮。

示例代码如下:

javascript
methods: {
  buy(dishId) {
    // 弹出窗口或者模态框,选择菜品份数,辣度,备注等信息。
    // 在确认下单时,将选中的菜品信息和dishId传递给后端进行处理。
     let quantity = window.prompt("请输入下单份数");
     let remark = window.prompt("请输入备注");
     let degree_of_spiciness = window.prompt("请选择辣度");
     const order = {
         dishId: dishId,
         quantity: Number(quantity),
         remark: remark,
         degree_of_spiciness: degree_of_spiciness
     };
    // 将订单数据提交给后端处理,并等待响应。
     axios.post('/api/orders', order)
         .then(response => {
             // 处理成功后需要更新前端数据状态
             console.log(response.data);
         })
         .catch(error => {
             console.error('Error submitting order', error);
         });
   }
}
在 buy() 函数中,我们使用 window.prompt() 内置方法弹出一个窗口,允许用户选择菜品数量和附加信息。之后,我们将选中的信息构建成一个对象,在使用axios库发送POST请求将其提交到服务器。

这只是一个示例,你可以根据自己的需求对代码进行修改,并确保后端与前端协同工作良好。