Как я могу сгенерировать список с помощью v-for в Vue

#html #css #vue.js

#HTML #css #vue.js

Вопрос:

Я пытаюсь сгенерировать список некоторых определенных переменных, используя v-for .

У меня есть список некоторых строк… ["Electronics","Furniture", "Cloths", "Sports", "Entertainment", "Others"] и в каждом теге <li> я хочу сгенерировать некоторые <img> и <a> пометить пользовательским текстом.

Итак, я бы представил список со всеми вышеперечисленными вещами, но ничего не отображается. Как я могу изменить свой код, чтобы сгенерировать список этих элементов?

Код в App.vue

 <template>
  <div id="app h-100">

    <Header></Header>

    <div class="center-page h-100">
      <Navigation></Navigation>
    </div>

  </div>
</template>

<script>
  import Header from "@/components/TheHeader";
  import Navigation from "@/components/TheNavigation";

  export default {
    name: 'App',
    components: {
      Navigation,
      Header
    }

  }
</script>
  

Это иерархия моего проекта. Этот код находится внутри TheHeader .
Иерархия

 <ul id="example" class="menu-dropdown">
   <li v-for="item in items" :key="item" class="center align-self-center">
      <img class="float-left" href="@/assets/logo.png" src="@/assets/logo.png"  />
       <a href="#"><h3>{{item}}</h3></a>
   </li>
</ul>


<script>
    import Vue from "vue";

    new Vue({
        el: '#example',
        data:{
            items:["Electronics","Furniture", "Cloths", "Sports", "Entertainment", "Others"]
        }
    })

    export default {
        name: 'Header',
        props:{},
    }

</script>
  

Ответ №1:

Прежде всего, вам нужно сохранить один экземпляр vue в одном компоненте. Также не забывайте о <template> теге.

 <template>
    <ul id="example" class="menu-dropdown">
        <li v-for="item in items" :key="item" class="center align-self-center">
            <img class="float-left"/>
            <a href="#"><h3>{{item}}</h3></a>
        </li>
    </ul>
</template>


<script>
    export default {
        name: 'TheHeader',
        props: {},
        data() {
            return {
                items: ["Electronics", "Furniture", "Cloths", "Sports", "Entertainment", "Others"]
            }
        }
    }
</script>  

Ответ №2:

правильно добавьте ключ в for

v-for=»элемент в элементах»: ключ = «item.index»

Комментарии:

1. Это решение не работает для меня … все еще выдает ошибку, я думаю, что это из-за нового экземпляра Vue, как упоминалось @Evgeniy Kuznetsov