使用 vuex 保存整个表单

Saving an entire form with vuex

我刚开始使用 Vue 和 Vuex,想知道如何将整个表单保存到 API。我找到了 this 并且它似乎只是对单个字段的一个很好的解决方案。这是否意味着我需要为表单中的每个字段做一个带有 getter 和 setter 的自定义计算属性?我了解数据绑定如何适用于本地存储(这似乎是大多数示例所使用的),但每次击键更新后端服务似乎有点矫枉过正。

我想做的是在用户执行操作(例如单击保存按钮)时在表单上执行一次提交,我想为每个字段制作一个计算 属性 或方法是不是正确的方法。

模板:

<div v-show="isEditing" class="edit-view">
  <form>
    <div class="form-group">
      <label>Title</label>
      <input :value="item.title" type="text" class="form-control" @input="update"  />
    </div>
    <div class="form-group">
      <label>Description</label>
      <input :value="item.description" type="text" class="form-control" @input="update" />
    </div>
  </form>
</div>

JS:

export default {
  name: 'todo',
  props: ['item'],
  data() {
    return {
      isEditing: false
    }
  },
  methods: {
    showEdit() {
      this.isEditing = true;
    },
    update() {
      // Commit a change to vuex store
    }
  }

将表单数据保存在您的表单组件本地。所以在 data() 中定义所有表单属性。将 v-model 应用于所有输入元素和相应的数据属性。当用户单击提交时,使用表单数据进行一次提交。

这样,您的表单组件将包含编辑后的值,而 vuex 存储将包含提交的值。