如何在Vue.Js中的脚本中将v模型的数组值获取到数组对象?

时间:2019-07-13 09:39:54

标签: arrays vue.js vuex

我有一个动态输入字段,可以根据需要添加和删除。但是,当我尝试将v模型的数组值获取到对象时,它会显示未定义的值。我无法在脚本部分的模板中获取v-model的数组值。

模板代码

<div v-for="(record, index) in records" :key="record.name">
      <b-card style="margin-top:18px;">
        <span @click="remove(index)" v-if="index != 0">
          <strong>
            <b class="text-danger float-right">X</b>
          </strong>
        </span>
        <br />
        <b-form-group
          label-cols="12"
          label-cols-lg="3"
          label-for="input-1"
          label="Name: "
          label-align-sm="right"
          label-align="left"
        >
          <b-form-input
            id="input-1"
            v-model="record.name"
            type="text"
          ></b-form-input>
        </b-form-group>

        <b-form-group
          label-cols="12"
          label-cols-lg="3"
          label-for="input-2"
          label="Order: "
          label-align-sm="right"
          label-align="left"
        >
          <b-form-input
            id="input-2"
            v-model="record.order"
            type="text"
          ></b-form-input>
        </b-form-group>
      </b-card>
      <div>
        <span @click="add">
          <strong>
            <b class="text-success float-right">+</b>
          </strong>
        </span>
      </div>
    </div>

脚本代码

<script>
export default {
  data: () => ({
    update: false,
    records: [
      {
        name: "",
        order: ""
      }
    ]
  }),
  methods: {
    save(evt) {
      evt.preventDefault();
      var object = {
        name: this.records.name,
        order: this.records.order
      };
      console.log(object);
    },

    add() {
      this.records.push({
        name: "",
        order: ""
      });
    },
    remove(index) {
      this.records.splice(index, 1);
    }
  }
};
</script>

我已经尝试在console.log中查看是否显示了数据,但是它会响应未定义的值。

1 个答案:

答案 0 :(得分:0)

您需要索引记录数组。

var object = {
        name: this.records[someIndex].name,
        order: this.records[someIndex].order
      };