题目描述
关于v-model动态绑定多层级的属性名
题目来源及自己的思路
因为我想做一个自动生成表单的组件,然后绑定初始值时,希望通过对象的层级关系去绑定v-model,这样最后提交的数据,也将是带有层级的对象数据。
相关代码
<template>
<el-form ref="form" :model="form" label-width="80px">
<el-form-item label="即时配送">
<el-switch v-model="form.delivery.value" />
</el-form-item>
<el-form-item>
<el-button type="primary" @click="onSubmit">立即创建</el-button>
<el-button>取消</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
props: {
modelProps: {
type: String,
default: ''
}
},
data() {
return {
form: {
delivery: {
value: false
},
role: {
id: 1,
name: '测试'
}
}
}
},
methods: {
onSubmit() {
console.log(this.form)
}
}
}
</script>
你期待的结果是什么?实际看到的错误信息又是什么?
假如modelProps
接收到一个值是字符串"role.id"
,那我希望v-model可以变成form.role.id
,如果接收到一个值是字符串"role.name"
,希望v-model可以变成form.role.name
类似于这样的
补充: 然后提交的数据也要有对应的层级结构:
{ delivery: {value: true}}
{ role: {id: 1}}
{ role: {name: 'hello'}}
实际有点难实现这个需要,希望大家能够给我一些思路,或者其它的实现方式