Vue 樹結(jié)構(gòu)多層菜單遍歷

記錄自己項(xiàng)目使用遍歷樹菜單方法
主要使用Vue.extend方法,參考官方API

模擬樹結(jié)構(gòu)數(shù)據(jù)

    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)
      })
    }

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文的目標(biāo) 以更加清晰的結(jié)構(gòu)和邏輯讓我們更好的理解Vue雙向綁定的原理實(shí)現(xiàn): 1、理解Vue的雙向綁定代碼實(shí)現(xiàn)邏輯...
    檀越_bbf2閱讀 580評論 0 0
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內(nèi)容,還有我對于 Vue 1.0 印象不深的內(nèi)容。關(guān)于...
    云之外閱讀 5,174評論 0 29
  • ## 框架和庫的區(qū)別?> 框架(framework):一套完整的軟件設(shè)計(jì)架構(gòu)和**解決方案**。> > 庫(lib...
    Rui_bdad閱讀 3,150評論 1 4
  • 1.樹的定義 一棵樹(tree)是由n(n>0)個元素組成的[有限集合],其中: 每個元素稱為結(jié)點(diǎn)(node); ...
    SaySei閱讀 2,373評論 0 0
  • 漸變的面目拼圖要我怎么拼? 我是疲乏了還是投降了? 不是不允許自己墜落, 我沒有滴水不進(jìn)的保護(hù)膜。 就是害怕變得面...
    悶熱當(dāng)乘涼閱讀 4,473評論 0 13

友情鏈接更多精彩內(nèi)容