Перемещение v-for в шаблон компонента в Vue

#vue.js #vue-component

#vue.js #vue-компонент

Вопрос:

Это мой JS-код:

 Vue.component('card-stack', {
  props: ['course'],
  template: `
      <h3 class="course-card__title">
        {{ course.title }}
      </h3>
    `
})

new Vue({
  el: '#app',
  data: {
    courses: [
      { title: 'sometext' }
    ]
  }
})
  

и это мой HTML:

 <div id="app">
  <card-stack v-for="x in courses" v-bind:course="x"></card-stack>
</div>
  

Мой вопрос в том, как я могу переместить v-for в часть шаблона компонента? что-то вроде этого:

 Vue.component('card-stack', {
  props: ['list'],
  template: `
      <div v-for="course in list">
          <h3 class="course-card__title">
             {{ course.title }}
          </h3>
      </div>
    `
})
  

Ответ №1:

Это не работает, потому что в Vue 2 у вас может быть только 1 корневой HTML-элемент в шаблоне.

Поскольку у вас есть цикл, он отображает несколько элементов. Все, что вам нужно сделать, это просто обернуть ваш цикл с помощью div , чтобы был только 1 корневой элемент:

 template: `
  <div>
    <div v-for="course in list">
      <h3 class="course-card__title">
        {{ course.title }}
      </h3>
    </div>
  </div>
`
  
 <card-stack :list="list"></card-stack>