当我在没有输入input
的情况下,点击确认验证,提示输入框为空
<el-form-item label="变更客户经理" prop="changeUserName">
<div class="flex">
<el-input v-model="form.changeUserName" ref="inputRef" disabled />
<el-button class="ml-10" @click="changeManage">.....</el-button>
</div>
</el-form-item>
点击选择变更的内容之后,手动给input
赋值后,依然提示让我输入,而此时我输入框是有值的
我试了各种方法,手动给输入框获取焦点再失去焦点,发现都不行
最后找到原因是:
根据官方文档定义:如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。
因此,Vue实例创建时,changeUserName
属性名并未声明,因此Vue就无法对属性执行 getter/setter
转化过程,导致changeUserName
属性不是响应式的,因此无法触发视图更新
解决方案:
第一步:
readonly
或者disabled
触发不了blur
事件,可以改成change
事件
rules: {
changeUserName: [{ required: true, message: "请选择客户经理", trigger: "change"}],
},
第二部:
给form的changeUserName加上初始值
data(){
return :{
form:{
changeUserName:""
}
}
}
第三步:
在给changeUserName
赋值的时候,使用Vue的全局API: $set()
赋值
submitPopupData() {
// this.form.changeUserName = this.currentRow.userName
this.$set(this.form,'changeUserName',this.currentRow.userName);//赋值
this.dialogVisible = false;
},
到此就解决了!