问题:
今天在使用iview组件库中的Input时,为组件设置了on-blur事件,但是发现每输入一个字符就会失焦触发on-blur事件,导致输入不断触发验证。
解决如下:
<FormItem v-for="(inputItem,index) in nodeData.inputs" :key="index" :label-width="10">
<span v-if="!editInputName[index]">{{inputItem.name}}</span>
<Input v-else style="display: inline;" v-model="inputItem.name" @on-blur="outChanged('inputs', index)"/>
<Icon type="ios-create-outline" v-if="invoke" size="20" @click="editEndpointName('editInputName', index)" color="#2b85e4"/>
<span>({{inputItem.datatype}})</span>
</FormItem>
主要问题就是,最开始绑定key时,使用的是
inputItem.name+index ,而inputItem.name在input框中内容已被修改,导致元素更新,input元素失去焦点,所以将key值的绑定改为index后,输入内容不会引起更新,就不会失去焦点触发事件。