<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连同这些传到后端
可以在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请求将其提交到服务器。
这只是一个示例,你可以根据自己的需求对代码进行修改,并确保后端与前端协同工作良好。