vue子组件如何修改父组件中的对象的值?

如题:在子组件child中只能this.$emit('updata:logo',res.data.file.file_path);这样修改父组件的值,那假设logo属性在父组件的form对象中呢?
this.$emit('updata:form.logo',res.data.file.file_path);这样子无效

请问该如何解决这种问题?
我目前有想到可以在父组件中写一个专门的赋值方法,子组件去调用并传入要修改的对象的key值,然后该父组件中的方法再去修改form对象中对应的key值。但是我还是想直接赋值,易读性更高

阅读 7k
4 个回答

这写法就是用来解耦的,在父组件对应绑定值上带.sync修饰符
:logo.sync="logo"
:logo.sync="form.logo"
绑定在父组件的哪个对象哪个属性上直接写就行,子组件内根本不需要关心


如果你要强耦合,写的子组件只给这个父组件用,直接

this.$parent.form.logo = xxxx

就行了,反正你看得懂

其实 ... props 的数据在子级直接修改会导致父级数据的同步变更的
只是规范要求用不要直接改才多此一举的
注意!修改指 Object,你拿 String 当我没说

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题