使用vue自定义了一个递归组件。
效果:
不多说,直接上代码。
纯列表展示(icon样式使用的bootstrap的glyphicon):
new Vue({
})
Vue.component('tree-list', {
template: `
<ul class="tree-list">
<li v-for="(item, index) in list">
<div @click="toggle(item, index)">
<i :class="['icon', 'glyphicon', getIcon(item, index)]"></i>
<span>{
{ item.name }}</span>
</div>
<tree-list v-if="scope[index]" :list="item.children"></tree-list>
</li>
</ul>
`,
props: {
list: Array
},
data () {
return {
scope: {}