你能举个例子吗,包含代码
时间: 2024-09-06 13:04:47 浏览: 31
当然可以。假设我们有一个简单的Vue.js单页面应用,其中包含一个表格组件,每个单元格都是一个订单的复选框,我们可以使用`v-model`和自定义事件来实现只选中一项时其他项自动取消选中的效果。这里是一个简化版的例子:
```html
<template>
<div>
<table>
<tr v-for="(order, index) in orders" :key="index">
<td>
<input type="checkbox"
:id="`order-${index}`"
v-model="selectedOrders[index]"
@change="toggleOrderStatus(order)">
<label :for="`order-${index}`">{{ order.name }}</label>
</td>
</tr>
</table>
</div>
</template>
<script>
export default {
data() {
return {
orders: [
{ id: 1, name: '订单1', status: false },
{ id: 2, name: '订单2', status: false },
// 更多订单...
],
selectedOrders: new Array(orders.length).fill(false),
};
},
methods: {
toggleOrderStatus(order) {
if (this.selectedOrders.some((status, i) => status && i !== order.id)) {
this.selectedOrders.forEach((status, i) => {
if (i !== order.id) {
this.selectedOrders[i] = false;
}
});
} else {
this.selectedOrders[order.id] = true;
}
},
},
};
</script>
```
在这个例子中,`selectedOrders`数组存储了每个订单是否被选中的状态。当用户点击一个复选框时,`toggleOrderStatus`方法会被调用,如果已经有其他的订单被选中,则取消所有其他订单的选择;如果没有其他被选中的,就只选中当前这个。
阅读全文