javascript - 如何处理 Vue.js 中数据中多层 JSON 的设置值
问题描述
data
这是我的 Vue 组件中的一个表单childEle
:
data:{
form:{
root1:Number,
root2:{
child1:[],
child2:{},
child3:String
},
root3:[],
root4:{
child4:string,
child5:[]
}
}
}
这是一个非常复杂的JSON Object
. 由于它是与 in 一起出价的form
,iView
因此似乎不可能将其变平JSON Object
。现在,一旦我打开这个组件(实际上它是一个Modal
),我需要为这个表单设置值,所以我通过以下方式从父元素传输值props
:
props:{
outForm:{
type:Object,
default: function () {
return {}
}
}
……
}
并为其添加属性watch
:
watch:{
outForm(val){
this.form = val
}
}
现在出现了问题。我还绑定了一个value
属性来控制是否显示Modal
,但是当我将值传递给value
属性时, value
indata
没有改变,Modal
即使我调用了它也无法关闭this.$forceUpdate()
。如何处理?感谢您的帮助!
解决方案
您对显示或隐藏模态的控制不需要保留在模态组件中。
一个选项是威胁模式始终处于活动状态,并使用父级内部的 v-if 条件来控制它,例如在名为 的变量中showModal
。
因此,当用户执行显示模式的操作时,父级设置为 true,另一方面,模式会发出关闭事件 ( this.$emit('close')
),在父级 ( <child-component @close="hideModal" />
) 中捕获并设置showModal
为 false。
但是,如果您确实需要将此变量放入表单中,那么深度反应性可能会有所帮助
推荐阅读
- html - 如何使嵌套表列的宽度等于父级
- mysql - 如何比较由超级表相关的两个计数?
- android - BackHandler 或 webview 返回和退出应用程序
- javascript - 如何在天气应用程序中显示 OpenWeatherMap 图标?
- sh - 使用 sh 检查 IP 是否属于 IP 范围?
- github - GitHub Actions:如何屏蔽 workflow_dispatch 输入,如秘密?
- python - 使用 Python urllib 读取 html 的错误
- python - 如何在 tkinter python 中使按钮的背景颜色闪烁
- java - JAVA:过滤等于今天和之后的所有日期
- python - Python socketio - 如何将数据从服务器发送到特定客户端?