Vue 树结构多层菜单遍历

记录自己项目使用遍历树菜单方法
主要使用Vue.extend方法,参考官方API

模拟树结构数据

    const tree = [
      {
        name: 'it公司',
        child: [
          {
            name: '本级公司'
          },
          {
            name: '人事部',
            child: [
              {
                name: '测试1'
              },
              {
                name: '测试2'
              }
            ]
          },
          {
            name: '行政部'
          },
          {
            name: '销售部'
          }
        ]
      }
    ]

方法

    setListItem(tree) {
      const deepJoinHtml = function(arr) {
        let str = '<ul>'
        arr.forEach(item => {
          const child = item['child']
          let cel = ''
          if (child && Array.isArray(child) && child.length) {
            cel = deepJoinHtml(child)
          }
          str += `<li><div :class="['${cel && `group`}']" @click.stop="${cel ? 'onOpen' : 'onItem'}">${name}</div>${cel}</li>`
        })
        return (str += '</ul>')
      }
      const _comp = Vue.extend({
        methods: {
          onItem() {
            alert('onItem')
          },
          onOpen({target}) {
            const cls = 'active'
            if (target.className.includes(cls)) {
              target.classList.remove(cls)
            } else {
              target.classList.add(cls)
            }
          }
        },
        template: deepJoinHtml(tree)
      })
      const el = new _comp().$mount().$el
      this.$nextTick(() => {
        document.querySelector('.emp-list-org__wrap').appendChild(el)
      })
    }

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文的目标 以更加清晰的结构和逻辑让我们更好的理解Vue双向绑定的原理实现: 1、理解Vue的双向绑定代码实现逻辑...
    檀越_bbf2阅读 562评论 0 0
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,095评论 0 29
  • ## 框架和库的区别?> 框架(framework):一套完整的软件设计架构和**解决方案**。> > 库(lib...
    Rui_bdad阅读 3,032评论 1 4
  • 1.树的定义 一棵树(tree)是由n(n>0)个元素组成的[有限集合],其中: 每个元素称为结点(node); ...
    SaySei阅读 2,303评论 0 0
  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,362评论 0 13