对于递归组件只调用一次的问题,解决方案示例:
父组件:parent.vue
<template> <div id="app"> <Tree :data="data" @nodeClick="nClick"></Tree> </div></template><script> import Tree from './components/tree.vue' export default { components: {Tree}, name: 'app', data(){ return { data: { 'title': '111', 'children': [ { 'title': '111-1' }, { 'title': '111-2', 'children': [ {'title': '111-2-1'} ] } ] } } }, methods: { nClick(title){ console.log(title) } } }</script>
树状组件:components/tree.vue,在递归组件中再注册下自定义事件
<template> <ul class="tree"> <li> <span v-html="data.title" @click="handleClick(data.title)"></span> <m-tree v-for="(item , idx) in data.children" :data="item" :key="idx" @nodeClick="outClick"></m-tree> </li> </ul></template><script> export default { name: 'mTree', props: { data: { type: Object, default (){ return {} } } }, methods: { handleClick(title){ this.$emit('nodeClick',title); }, outClick(title){ this.$emit('nodeClick',title); } } }</script>
欢送关注:http://fenxianglu.cn/