如何在组件文件中嵌入v-fors?

时间:2016-06-13 23:43:26

标签: javascript vue.js vue-component

我已经阅读了VueJS教程,但我仍然无法找到解决方案。

我有一个列表列表,我想用手风琴显示它们(这是vue-strap中的一个组件,经过多次测试才能正常工作)。

所以有一个列表如:

'myList': [
  ['el 1', 'el 2', 'el 3'], ['el 1', 'el 2'], ['el another']
]

我希望以下可视化:

清单1:

  • el 1
  • el 2
  • el 3

清单2:

  • el 1
  • el 2

清单3:

  • el another

但是VueJS没有渲染这个组件......!

代码如下:

<template>
  <accordion id="rabo" :one-at-atime="true">
    <template v-for="list in myLists">
      <panel header="List #{{ $index }}" :is-open="true">
        <ul>
          <li v-for="el in list">
            {{el}}
          </li>
        </ul>
      </panel>
    </template>
  </accordion>
</template>

<style lang="scss" scoped>
</style>

<script>
  import Vue from 'vue'
  import { accordion, panel } from 'vue-strap'

  module.exports = {
    components: {
      'accordion': accordion,
      'panel': panel
    }
  }

  new Vue({
    el: '#rabo',
    data: {
      'myLists': [['el 1', 'el 2', 'el 3'],['el 1','el 2'],['el another']]
    }
  })
</script>

1 个答案:

答案 0 :(得分:2)

你应该:

  1. 将Vue实例创建为单独的文件
  2. myLists数组放入组件的data
  3. 绑定header prop
  4. <强> MyAccordion.vue

    <template>
      <accordion :one-at-atime="true">
        <template v-for="list in myLists">
          <panel :header="`List #${$index}`" :is-open="true">
            <ul>
              <li v-for="el in list">
                {{el}}
              </li>
            </ul>
          </panel>
        </template>
      </accordion>
    </template>
    
    <script>
      import { accordion, panel } from 'vue-strap'
    
      export default {
        components: {
          accordion, panel
        },
    
        data () {
          return {
            myLists: [
              ['el 1', 'el 2', 'el 3'],
              ['el 1', 'el 2'],
              ['el another']
            ]
          }
        }
      }
    </script>
    

    Vue实例

    import Vue from 'vue'
    import MyAccordion from './MyAccordion.vue'
    
    new Vue({
      el: '#demo',
      components: { MyAccordion }
    })
    

    http://www.webpackbin.com/VyPHjF_V-