排查问题发现v-model绑定值是变化的,刷新页面下次点击编辑可以回写上次选中的内容,说明只是vue没有监听到其变化,未刷新导致
1 常用解决方法:
使用vue中带的this.$set()方法去更新内容,发现仍然不可以
2 使用change方法手动更新表单内容,发现也不能
部分代码:
HTML:
<el-select v-model=“otherForm.departHour” placeholder=“请选择发车时段” @change=“val => onDepartHourChange(val, otherForm, row, index)”>
JS:
data() {
return {
dicts: {
departHour: [] // 发车时段
},
otherForm: {
classPlanId: null, // 行发车时段绑定的id,其表示当前的发车时段
departHour: ‘’ // 用于做数据回写label
}
}
},
onDepartHourChange(val, form) {
this.
s
e
t
(
f
o
r
m
,
′
c
l
a
s
s
P
l
a
n
I
d
′
,
v
a
l
.
v
a
l
u
e
)
/
/
响应式加载,数组、对象属性中赋值最好使用
set(form, 'classPlanId', val.value) // 响应式加载,数组、对象属性中赋值最好使用
set(form,′classPlanId′,val.value)//响应式加载,数组、对象属性中赋值最好使用set进行赋值
this.$set(form, ‘departHour’, val.label)
},
最终解决方法:在HTML模板中加入了 slot-scope=“{ row, index }”
最后效果图: