为了账号安全,请及时绑定邮箱和手机立即绑定

Vue.js分组列表问题

Vue.js分组列表问题

守着星空守着你 2019-03-23 19:15:47
不喜欢用插件想实现一个多层伸缩折叠的列表目前图片就是我便里出来的效果,展开合并大家有什么好的逻辑吗html:.list(v-for="(i, n) in treeData" :key="n" :title="i.name")  i.iconfont.icon-webicon215.arrowIcon(v-show="i.child")  span {{i.name}}  .list(v-for="(s, n) in i.child" :key="n" :title="s.name" :style="{textIndent: s.child ? '.8em': '1.6em'}" @click="show(n, s.name)")    i.iconfont.icon-webicon215.arrowIcon(:style="{color: s.child ? '#c0c4cc': 'transparent'}")    span {{s.name}}    .list(v-if="s.child" v-for="(q, n) in s.child" :key="n" :title="q.name" :style="{textIndent: q.child ? '1.6em': '2.4em'}" @click="show(n, q.name)")      i.iconfont.icon-webicon215.arrowIcon(:style="{color: q.child ? '#c0c4cc': 'transparent'}")      span {{q.name}}
查看完整描述

4 回答

?
烙印99

TA贡献1829条经验 获得超13个赞

{title,children}的形式来描述每个节点,children不为空就接着遍历children,然后用前面定义的形式描述,如此循环,直至children为空


查看完整回答
反对 回复 2019-04-03
?
慕仙森

TA贡献1827条经验 获得超7个赞

方法很多,纯 HTML 就行,关键词:<details>

details

  summary 一级标题

  ul

    li 子标题1

    li 子标题2

    li

      details

        summary 二级标题

        ul

          li 子子标题1

          li 子子标题2


查看完整回答
反对 回复 2019-04-03
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

也可以递归的时候加入布尔,可以根据parent 是否为undefined,根节点肯定是undefined,然后再根据其他节点布尔搭配进行显示隐藏

        title: '一级节点',

        expanded: false,

        children: [{

            title: '二级节点',

            expanded: false,

            children: [{

                title: '三级节点'

            }, {

                title: '三级节点'

            }, {

                title: '三级节点'

            }]

        }, {

            title: '二级节点',

            expanded: false,

            children: [{

                title: "<span style='color: red'>三级节点2-1</span>"

            }, {

                title: "<span style='color: red'>三级节点2-2</span>"

            }]

        }]

    }]

    

    recursion: function (val,arr1,$treeId,parent) {

        // 递归

            for (let i = 0; i < val.length; i++) {

                arr1.push({ node: val[i], $treeId: $treeId, parent: parent })

                if (val[i].children && val[i].children.length > 0) {

                    this.recursion(val[i].children, arr1, $treeId + 1, val[i])

                }

            }

            return arr1

        }

        vue 页面 parent === undefined || parent.expanded === undefined || parent.expanded === true


查看完整回答
反对 回复 2019-04-03
?
杨魅力

TA贡献1811条经验 获得超6个赞

可以看看官网上vue的递归组件


查看完整回答
反对 回复 2019-04-03
  • 4 回答
  • 0 关注
  • 975 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信