vue3: v-model如何传递多层嵌套属性?
vue3: v-model如何传递多层嵌套属性?
预期:formConfigVal.formData.tableattachments.innerRequireAttach当成了一个属性实际:tableattachments.innerRequireAttach当成了一个属性
vue3: v-model如何传递多层嵌套属性?
回复
1个回答

test
2024-06-23
首先这个问题跟 Vue 无关,而是基础的 JS 语法问题。
const a = {
b: {
c: {
d: 'foo'
}
}
}
const key = 'c.d';
const val = a.b[key];
console.log(val);
问:上面的代码会输出什么?
如果你能明白为什么,那么这个问题也就很好理解了。
如果你真的想要这种深层路径的属性取值/赋值,你可以利用 lodash 库提供的 _.get()
、_.set()
这两个方法。
其次这里用 v-model 就不合适了(虽然其实也能实现,但写法会比较 ugly),但 v-model 本来就是一个语法糖,它实质会被解析成 v-bind + v-on:update,那么你直接写成 v-bind + v-on:update 就好了。
<!-- 伪代码 -->
<Component :foo="_.get(data, path)" @update:foo="(e) => _.set(data, path, e)" />
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容