Vue父子组件数据传递问题:下拉框选中值仅控制台输出未存入提交对象
问题描述
Vue开发中Request Form父组件嵌套Dropdown Menu下拉菜单子组件,点击提交按钮时表单所有值会被组装为提交对象,但目前下拉框选中值仅能在console.log中打印输出,无法被存入最终的提交对象。
修复方案
- 【最常见根因】补充提交对象的赋值逻辑
你父组件$newObject方法中返回的提交对象默认selected为空值,你当前实时更新的selected是存储在data根级的独立字段,提交时如果直接使用$newObject的返回值,没有把this.selected赋值到对应字段,就会出现该问题。修复代码示例:
// 提交表单的逻辑中补充这行 const submitData = this.$newObject() submitData.selected = this.selected // 后续再组装其他字段、发起提交请求
- 检查子组件模板的绑定配置
你当前仅提供了子组件的script代码,需确认下拉菜单的v-model是否绑定了计算属性mutableItem,只有正确绑定后下拉选中值才会触发事件同步到父组件:
<!-- 子组件模板参考写法 --> <select v-model="mutableItem"> <option value="A">选项A</option> <option value="B">选项B</option> </select>
修正父组件模板的传值写法
父组件调用子组件时:selected="this.selected"的写法不规范,Vue模板中绑定变量不需要加this,修改为:selected="selected"即可。适配BaseForm混合的提交逻辑
如果你的表单提交是由引入的BaseForm混合自动处理,通常这类混合只会收集formFields配置内的字段组装提交对象,你当前的selected是独立在data中定义的,没有被纳入收集范围。可以选择将selected加入formFields配置,或者在BaseForm提供的提交前置钩子中手动将this.selected塞入提交对象。
内容的提问来源于stack exchange,提问作者user16741832
相关产品推荐
相关产品推荐

