vuejs实现递归树型菜单组件

2020-06-16 05:38:18易采站长站整理


export default {
name: 'treeMenu',
//props: ['model'], //这样和下面效果一样
props: {
model: { type: Object },
},
components: {},
}

按照vue的思想,不操作Dom树,我们定义两个变量,一个显示隐藏子菜单(open),一个存不存子菜单修改图标(isFolder)。


data() {
return {
open: false, //一个显示隐藏子菜单(open)
//isFolder: true //这个不要写死,运用计算属性计算看存不存在
}
},

利用vue计算属性动态改变isFolder的值,修改图标,判断存在不子级和子级长度


computed: {
isFolder() { //利用vue计算属性动态改变isFolder的值,修改图标,判断存在不子级和子级长度
// return this.model.children && this.model.children.length //和下面效果一样
let isFolder = false
if (this.model.children && this.model.children.length) {
isFolder = true;
} else {
isFolder = false;
}
return isFolder
}
},

显示隐藏事件


methods: {
toggle() {
if (this.isFolder) {
this.open = !this.open
}
}
},

写到这里我们已经做完一个树形菜单了