Vue.js在添加新行时尝试递增数组值

use*_*667 1 javascript node.js ecmascript-6 vue.js

我在Vue.js中添加新行时尝试增加数组值,但是我收到错误:

您可能在组件呈现功能中有一个无限的更新循环.

JavaScript:

new Vue({
  el: '#app',
  data: () => ({
    inputs: [{
      id: 0,
      username: ''
    }],
  }),
  methods: {
    add() {
      this.inputs.push({ id: this.id++, username: '' });
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

标记:

<div id="app">
  <div v-for="input in inputs">
    <input :key="input.id" :name="'username_' + input.id" type="text" v- v-model="input.username" placeholder="username">
  </div>
  <button @click="add">Add</button>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,如果我在add函数中对该值进行硬编码,则它第一次工作:

add() {
  this.inputs.push({ id: 1, username: '' });
}
Run Code Online (Sandbox Code Playgroud)

那么,我怎样才能让它变得动态呢?打字id: this.id++不起作用.

mos*_*rad 6

问题: - this.id未定义Vue不知道id,因为它不在组件数据中

所以你必须选择解决你的问题

new Vue({
    el: '#app',
  data: () => ({
    inputs: [{
   id: 0,
   username: ''
}],
  }),
  methods: {
    add () {
      console.log(this.inputs.length);
      this.inputs.push({ id: this.inputs.length, username: '' });
    }
  }
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.min.js"></script>

  <div id="app">
    <div v-for="input in inputs">
      <input :key="input.id" :name="'username_' + input.id" type="text" v- v-model="input.username" placeholder="username">
    </div>
    <button @click="add">Add</button>
  </div>
Run Code Online (Sandbox Code Playgroud)