微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

vue.js学习之递归组件

递归组件

组件在它的模板内可以递归地调用自己,只有当它有 name 选项时才可以。 在官网这句话就是关键定义组件是一定要有name属性。按照这个思路我们开动吧。

实现最终效果图:

    

模拟数据格式如下

rush:js;"> var data = [{ "id": "1","data": { "menuName": "项目管理","menuCode": "",},"childTreeNode": [{ "data": { "menuName": "项目","menuCode": "BusProject","childTreeNode": [] },{ "data": { "menuName": "我的任务",{ "data": { "menuName": "人员周报","childTreeNode": [] }] },{ "id": "2","data": { "menuName": "数据统计","menuCode": "BusClock","childTreeNode": [] },{ "id": "3","data": { "menuName": "人事管理",{ "id": "4","data": { "menuName": "基础管理","childTreeNode": [] }]

html我们思路按照ul里面套li,无限ul套li,标题用div元素包裹,

rush:js;">
  •          {{model.data.menuName}}
  • 官方文档里面写的递归组件强调了使用name属性

    rush:js;"> export default { name: 'items',props: ['model'],components: {},}

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

    rush:js;"> data() { return { open: false,isFolder: true } }

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

    rush:js;"> computed: { isFolder() { return this.model.childTreeNode && this.model.childTreeNode.length } }

    显示隐藏事件

    rush:js;"> methods: {   toggle: function() { if(this.isFolder) { this.open = !this.open }   } }

    写到这里我们已经做完一个树形菜单了如下,最终样式就留给大家自己去实现了我在贴出完整代码供大家参考。

    rush:xhtml;">

    公司最开始是使用easyui做的管理系统,我接手后用vue完整模仿了一些easyui的东西,下面就是在树形菜单基础上模仿出了树形表格,下图为完整图

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流

    版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

    相关推荐