以select为例,如果select写在循环里,触发change事件时可能不只需要传递被选中项的值,还要传递index过去,来改变同一循环中的其他标签的状态。
下面这样写是无效的:
@change="changeRewardType(val,index)"
<div v-for="(item, index) in divList">
<el-select v-model="item.rewardType" class="cell_width" @change="changeRewardType(val,index)">
<el-option
v-for="itemOpt in rewardTypeList"
:key="itemOpt.value"
:label="itemOpt.label"
:value="itemOpt.value"
></el-option>
</el-select>
</div>
这样再封装一层就可以了:
@change="((val)=>{changeRewardType(val,index)})"
<div v-for="(item, index) in divList">
<el-select v-model="item.rewardType" class="cell_width" @change="((val)=>{changeRewardType(val,index)})">
<el-option
v-for="itemOpt in rewardTypeList"
:key="itemOpt.value"
:label="itemOpt.label"
:value="itemOpt.value"
></el-option>
</el-select>
</div>