vue实现v-model动态绑定变量的问题(带子对象的json)

发布于 2022-09-13 01:00:31 字数 685 浏览 13 评论 0

<template>
<el-input v-for="item in formKey" :key="item.value" v-model="form[item.value]"></el-input>
</template>

<script>

export default {
    name: 'Home',
    components: {

    },
    computed:{
    
    },
    data() {
        return {
            form:{
                name:'',
                nameObj:{
                    name:""
                }
            },
            formKey:[{
                value:'name',
            },{
                value:'nameObj.name'
            }]
        }
    }
}

</script>
大佬们,,请问下我这种绑定form这种格式nameObj下的name我的v-model应该怎么绑定,,我用nameObj.name不行要怎么才能动态

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

随波逐流 2022-09-20 01:00:31
1,
v-for="item in formKey" :key="item.value" v-model="form[item.value]"

将form的key 的 初始值附上,这样才能实现响应式

formKey.map(v=>{
  this.$set(this.form,v.value,"")
})
记得要等这个map先执行完成,然后再渲染数据。
可以尝试一下。~~~~~~~

如果还有内嵌对象,判断是否以.号分割 ,然后进一步处理逻辑。
以此类推。。。
要点就是要给form的key 附上初始值~~~~~~~~~
formKey.map(v=>{
  if(v.value.split(".").length>1){
        console.log("说明有内嵌对象")
        this.$set(this.form,v.value,{})
        let arr = v.value.split(".")
        arr.map(v2 => {
           this.$set(this.form[v.value],v2,"")
        })
        //如果还有内嵌对象,则需要写一个递归方法处理,类似这个步骤就可以
  }else{
    this.$set(this.form,v.value,"")
  }
  
})

2,
v-for="item in formKey" :key="item.value" :ref="item.value"

获取值直接操作dom 提交的时候根据key匹配值 this.$refs[item.value].value
月亮坠入山谷 2022-09-20 01:00:31
var form ={
                name:'',
                nameObj:{
                    name:""
                }
            };

(new Function('return form.'+'nameObj.name')())
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文