带有子表单的 Vue 模态对话框,提交数据

Vue modal diaglog with child form, submit data

黑色边界是模态组件,红色是有一些表单域的组件。 按钮、保存/取消基于父模态组件。该表单实际上比模态低 2 级(模态组件 -> 子包装器 -> 子表单),因此 vuex 感觉是更好的选择。

表单中还有一个文件选择器。

当用户单击“保存”按钮时,从组件(可能是多种表单之一)获取数据的最佳方式是什么。

选项 1 - 在每次字段更改时,调用一个方法来更新 VUEX 中的数据。
选项 1a - 在包含整个表单的每个字段更改上更新一个对象
选项 1b - 在更改时单独更新每个字段。
选项 2 - 使用 refs 在 child 中调用某种提交方法。
选项 3 - 比 1 或 2 更好的方法!

问题

你能不能创建一个组件的内部对象,在 v-model 上使用他,然后在点击提交按钮时更新 vuex。

您可以使用 computed setter 来避免在突变之外发生突变。

computed: {
    fieldOne: {
        get () {
            return this.$store.state.data.fieldOne
        },
        set (newValue) {
            this.$store.commit('data/fieldOne', newValue)
        }
    }

}

或者,您可以使用 :value@input 而不是 v-model

    <input
      :value="$store.state.data.fieldOne"
      @input="$store.commit('data/fieldOne', $event.target.value)"
    >