Vue嵌套组件的问题

App.vue

<test-tree-view :treeData="treeData"></test-tree-view>

var treeData = [
    {
      name: 'Paragraph one',
      children: []
    }
  ]

TestTreeView.vue

<template>
  <ul>
    <tree-item :data="child" v-for="child in treeData">
      <test-tree-view v-show="child.children" slot="childTreeComponent"
                      :treeData="child.children">
      </test-tree-view>
    </tree-item>
  </ul>
</template>
<style>
</style>
<script>
  import TreeItem from './TreeItem.vue'
  export default{
    name: 'test-tree-view',
    props: ['treeData'],
    mounted: function () {
    },
    data () {
      return {}
    },
    components: {
      TreeItem
    },
    methods: {
      isFloder: function () {
        return this.treeData.children && this.treeData.length
      }
    }
  }
</script>

TreeItem.vue

<template>
  <li>
    <span>{{data.name}}</span>
    <slot name="childTreeComponent"></slot>
  </li>
</template>
<style>
</style>
<script>
  export default{
    props: ['data'],
    data () {
      return {}
    },
    components: {}
  }
</script>

这个是dom的结果
Alt text

我饿的问题:

为什么在第一个<li>标签的里面会多出来一个<ul>标签呢?

阅读 6.6k
2 个回答
<template>
  <ul>
    <tree-item :data="child" v-for="child in treeData">
      <test-tree-view v-show="child.children" slot="childTreeComponent"
                      :treeData="child">
      </test-tree-view>
    </tree-item>
  </ul>
</template>

你递归了test-tree-view啊, 这个本身就含有一个ul的。
如果不想有,把 v-show 改成 v-if

TestTreeView.vue

里面你自己写的么

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题