【问题标题】:How to get array value of v-model to an array object in script in Vue.Js?如何将 v-model 的数组值获取到 Vue.Js 脚本中的数组对象?
【发布时间】:2019-11-22 20:53:14
【问题描述】:

我有一个动态输入字段,我可以根据自己的要求添加和删除。但是当我尝试将 v-model 的数组值获取到一个对象时,它会显示未定义的值。我无法在脚本部分的模板中获取 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 来查看数据是否显示,但它响应的值为 undefined。

【问题讨论】:

    标签: arrays vue.js vuex


    【解决方案1】:

    您需要为您的记录数组编制索引。

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

    【讨论】:

    • 我已经尝试索引字段,但它不起作用
    • @TesfuTekleab 检查这支笔:codepen.io/cruz404/pen/oKvMdM?editors=1010
    • 它正在为我打印。 Vue 将所有数据成员包装在一个响应式对象中。尝试记录此内容:console.log(JSON.stringify(object, 2, null));或者这个console.log(JSON.stringify(this.records,2));
    猜你喜欢
    • 1970-01-01
    • 2016-03-11
    • 2018-06-04
    • 2019-11-29
    • 2020-03-02
    • 1970-01-01
    • 2019-03-27
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多