在项目实践中遇到了一个问题,就是我循环出来的input和select输入第一次之后就失焦了,最后查看问题,是绑定的key值出了问题,因为key值我是用随机数生成的,其实你每次输入的时候key就重新渲染了,生成了一个新的key导致输入失焦
<el-form v-if="isType == 'update' || isType == 'edit' || isType == 'add'" inline
:model="editForm" :rules="updateRules"
ref="editForm" label-width="110px" class="demo-ruleForm">
<el-row>
<template v-for="(item,index) in addUpdateFormList">
<el-col :span="item.span" :key="'item' + index">
<el-form-item :label="item.label" :key="item.name" :prop="item.name">
<template v-if="item.type == 'input'">
<el-input v-model="editForm[item.name]" :placeholder="item.placeholder" clearable style="width:100%" @input="change($event)"></el-input>
</template>
<template v-else-if="item.type == 'select'">
<el-select v-model="editForm[item.name]" :placeholder="item.placeholder" style="width:100%" filterable>
<el-option
v-for="(items,index) in selectData[item.dataName]"
:key="'k_' + index + items.value"
:label="items.label"
:value="items.value">
</el-option>
</el-select>
</template>
<template v-else>
<el-input type="textarea" v-model="editForm[item.name]" :placeholder="item.placeholder" clearable style="width:100%"></el-input>
</template>
</el-form-item>
</el-col>
</template>
</el-row>
</el-form>
直接把key值,改成一个特定唯一的值就可以了,不在使用随机的key就可以了
谢谢大家,记得点个关注!!!