【问题标题】:Vuejs form get multiple value in arrayVuejs表单在数组中获取多个值
【发布时间】:2020-12-12 02:59:45
【问题描述】:

我有一个基于数据库数据显示多个输入的表单,我需要在提交表单时获取每个输入 value 以及它们的 id

我发送时这个表单的最终结果应该是这样的:

array:2 [
    0 => [
        id => 1,
        value => "123
    ],
    1 => [
        id => 5,
        value => "test"
    ]
]

目前我得到的是这个(只有值):

array:2 [
  0 => "123"
  1 => "test"
]

代码

<form ref="form" :model="form" enctype="multipart/form-data">
    <div class="row">
        <div
        class="col-md-6"
        v-for="(field, index) in fields"
        :key="index"
        >
        <input
            class="form-control"
            v-model="form.field[index]"
            :placeholder="field.title"
        />
        </div>
    </div>
    <vs-button
        class="mt-3"
        @click="onSubmit"
        native-type="submit"
        gradient
    >
        Generate
    </vs-button>
</form>


data() {
    return {
      fields: [],
      form: {
        field: [],
      },
    };
},
methods: {
     onSubmit(e) {
      e.preventDefault();
      axios
        .post("/api/admin/documents/add/", this.form, {...} // sending "this.form"
}

有什么想法吗?

【问题讨论】:

  • id应该从哪里来?
  • fields 数组就像在v-for 中使用它一样 -> v-for="(field, index) in fields"
  • 那么为什么 id 会是 1 和 5?对于两个项目,它们肯定是 0 和 1 - 这就是数组的工作方式
  • @Bravo 你说的是index 数字不是id,我的数据id 就像field.id 就像我有field.title
  • 哦,所以 fields 数组有一个 id ... 使用它

标签: javascript typescript vue.js vuejs2


【解决方案1】:

如果这有帮助,请告诉我。

var app = new Vue({
      el: '#app',
     data() {
    return {
      message: "Vue 2",
      fields: ["First Name", "Last Name"],
      myForm: []
    };
  },
  mounted() {
    this.myForm = this.fields.map((field, index) => ({
      id: index+1,
      title: field,
      value: ""
    }));
  },
  methods: {
    save(){
      console.log(this.myForm)
    }
  }
    })
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<div id="app">
    <h1>{{ message }}</h1>
    <div>
      <div v-for="(form, index) of myForm">
        <label>{{ form.title }}</label>
        <input :placeholder="form.title" v-model="form.value" name="index" />
      </div>
      <button type="submit" @click.stop.prevent="save">Submit</button>
    </div>
    <p>{{myForm}}</p>
</div>

【讨论】:

  • 您好,感谢您的回答,但我认为您有些混淆了。首先,我的v-for="(form, index) of myForm" 不是基于表单的,是基于数据库的,我有fields 数组提供的动态数据,其次我真的不需要发送index 数字但ids 我的fields 数组的东西就像field.idv-for="(field, index) in fields" 一样,对此有什么想法吗?
  • 这是你的字段模型 => 字段:[{id:1,title:"First Name"}, {id:4,title:"Last Name"}],
  • 它需要一些调整,而不是使用mounted(),我不得不将它放在我的axiosthen() 中,在那里我得到了fields 数组数据......但可以我现在谢谢你。
  • 坚持有一个问题,表单数据没有命名,所以我只是在我的控制器中获取关键数字,这使得处理传入的请求和循环它们变得很困难,有没有办法我们把这个数组的名字代替数字?就像我有field: {...data here...}
  • 如果你能提供示例代码,我可以帮助你。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-19
相关资源
最近更新 更多