今天在使用element form组件时,想创建一个修改的dialog ,赋上当前值再修改传后台
开始代码如下
HTML部分:
<el-dialog :visible.sync="updateDialogVisible" title="编辑任务" width="50%">
<el-form :model="updateForm" ref="updateForm">
<el-row>
<el-form-item label="请输入任务名称:">
<el-col :span="9">
<el-input v-model="updateForm.name"></el-input>
</el-col>
</el-form-item>
<el-form-item label="请选择所属用户:">
<el-select v-model="updateForm.user" multiple placeholder="请选择">
<el-option v-for="user in users" :key="user.id" :label="user.realname" :value="user.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button @click="dialogVisible = false">取 消</el-button>
<el-button type="primary" @click="update">确 定</el-button>
</el-form-item>
</el-row>
</el-form>
</el-dialog>
js部分:
updateTask(){
this.updateDialogVisible =true
console.log(this.task)
console.log(this.updateForm)
this.updateForm.name = this.task.name
this.updateForm.user = this.task.user
},
结果发现在dialog创建以后再给表单赋值以后,表单的值就一直无法修改,
https://blog.csdn.net/weixin_45167030/article/details/106962523
参考本文想使用延时的方法结果并不起效
updateTask(){
this.updateDialogVisible =true
console.log(this.task)
console.log(this.updateForm)
setTimeout(() => {this.updateForm.name = this.task.name
this.updateForm.user = this.task.user},10)
},
最后发现是因为没有给表单赋初始值,初始值应该一直存在
data() {
return {
updateForm:{
name:'',
user:[]
},
users:[],
updateDialogVisible: false
};
},
这样就可以生效了