代码之家  ›  专栏  ›  技术社区  ›  ofey

Vue未更新v-for-info数组

  •  0
  • ofey  · 技术社区  · 6 年前

    我在调用AddItem()方法的表单中使用v-model=“item1”。

    <form @submit.prevent="AddItem">
             <input type="text" name="items" v-model="item1">
    ...
    

    AddItem方法将输入数据发送到数据库,并将其推送到名为info[]的数组。

    这个数组是在data(){…}中定义的。

      data () {
        return {
        info: [],
        item1: null
        }
      },
    

    方法,

      AddItem(){
          db.collection('things').add({
            item1: this.item1,
          }).then(() => {
            this.info.push(this.item1)
          }).catch(err => {
              console.log(err);
            })
       }
    

    但是这个信息也会用在一个v-for-in-next的模板中,就在这个表单之后。我想如果info数组被更新,那么在模板中使用它也会更新。但是在我成功地将这些数据发送到数据库和更新信息之后,新的项在模板中的v-for迭代中不可见。

      <li v-for="(item, index) in info" :key="index">
               <span class="item">{{ item.item1 }}</span>
            </li>
    

    我刚接触vue,但我想我应该用某种方式使用数据绑定。


    解决了的

    我把值推送到info数组,而不是像这样推一个对象,

    this.info.push({item1: this.item1})
    
    1 回复  |  直到 4 年前
        1
  •  1
  •   Ducaluk    6 年前

    尝试

    <li v-for="(item, index) in info" :key="index">
      <span class="item">{{ item }}</span>
    </li>
    

    推入数组的值是字符串而不是对象(此项1).

    AddItem(){
      this.info.push(this.item1)
    }
    

    否则,您的代码看起来是正确的。在将来,制造小提琴总是很方便,这样别人就更容易帮助你了。