大家在写系统的时候,会有这样的需求:点击修改后把需要修改的数据放入表单,其中会有下拉单选框、下拉多选框。
- 展示下拉框单选框内的数据只需要将所选id赋值给下拉框绑定的值就可以了。在修改的时候,大家会发现下拉框选择不了,出现这问题的原因就是视图更新不够及时,在下拉框绑定一个change事件,写入
this.$forceUpdate()
就不会出现问题了
html
<el-form-item label="游戏">
<el-select v-model="form.gamesId" filterable placeholder="请选择" @change="changeGame">
<el-option v-for="item in gameList" :key="item.id" :label="item.name" :value="item.id"></el-option>
</el-select>
</el-form-item>
html
this.form.gamesId = res.data.gamesId // 点击修改后请求接口,将值赋给下拉框绑定的变量 这样会有视图更新不及时的问题
html
changeGame(id){
this.$forceUpdate() //在下拉框上绑定change事件 更新视图 这样就不会有视图更新的问题
},
- 多选框。多选框不像单选框只要直接赋值进去就可已,还需要做进一步处理
html
<el-form-item label="标签" prop="label">
<el-select v-model="form.label" multiple collapse-tags placeholder="请选择">
<el-option v-for="item in labels" :key="item.id" :label="item.name" :value="item.name">
</el-option>
</el-select>
</el-form-item>
html
// this.form.label:下拉框绑定值 this.labels:下拉框内所有数据
let arr=[]
this.form.label.forEach(val=>{
this.labels.forEach(item=>{
if(val==item.id){
arr.push(item.name);
}
})
})
this.form.label=arr