以select為例,如果select寫在循環里,觸發change事件時可能不只需要傳遞被選中項的值,還要傳遞index過去,來改變同一循環中的其他標簽的狀態。
下面這樣寫是無效的:
@change="changeStatus(val, index)"
<div v-for="(item,index) in itemList"> <el-select v-model="item.value" @change="changeStatus(val, index)"> <el-option v-for="op in options" :key="op.key" :label="op.label" :value="op.label"></el-option> </el-select> </div>
這樣再封裝一層就可以了:
@change="((val)=>{changeStatus(val, index)})"
<div v-for="(item,index) in itemList"> <el-select v-model="item.value" @change="((val)=>{changeStatus(val, index)})"> <el-option v-for="op in options" :key="op.key" :label="op.label" :value="op.label"></el-option> </el-select> </div>
親測有效!^_^