• 微信小程序treeview


    这是昨晚加班的时候,用微信小程序写的一个treeview组件。

    先来看看效果图吧!

    比较简单吧,直接view布局。

    移动端实现treeview类似的效果,有大的局限性。首先受设备宽度的影响,如果像PC端那样,显得那么有层次感,在移动设备上,有可能很丑的。这里,有一条线,将同一节点通过一条竖线连接起来,这样,不会因为层次问题,导致内容换行。

    <!--pages/demo/demo.wxml-->
    <import src="/templates/chapter.wxml" />
    <view class='tree'>
      <block wx:for="{{chapters}}" wx:key="item">
        <!---list-item beign-->
        <template is='node' data='{{node:item,expend:item.expend}}' />
        <!---list-item end-->
        <template is='nodes' data='{{nodes:item.children,expend:item.expend}}' />
      </block>
    </view>
    <!--底部声明 begin-->
    <view class="page__bd page__bd_spacing">
      <view class="weui-footer">
        <view class="weui-footer__links">
          <navigator url="" class="weui-footer__link">习刷刷</navigator>
        </view>
        <view class="weui-footer__text">Copyright © 2018-2032 www.xsstk.com</view>
      </view>
    </view>
    <!--底部声明 end-->

    其中引用了一个模板(chapter)。

    js中声明了几个方法。

    //节点点击事件
      nodeClick: function(e) {
        var list = this.data.chapters;
        var that = this;
        this.setTreeValue(e.currentTarget.dataset.id, list, function(t) {
          t.expend = !t.expend;
          //如果关闭节点,则递归调用
          if (t.expend === false) {
            that.closeNode(t);
          }
        });
        this.setData({
          chapters: list
        }); //刷新数据
      },
      //设置节点值
      setTreeValue: function(id, list, callback) {
        var that = this;
        for (var i in list) {
          var node = list[i];
          if (node.id === id) {
            callback && callback(node);
            return;
          } //跳出循环
          node.children && that.setTreeValue(id, node.children, callback); //递归循环
        }
      },
      //关闭节点
      closeNode: function(node) {
        var that = this;
        node.expend = false;
        node.children && node.children.forEach(function(t, i) {
          that.closeNode(t); //递归关闭节点
        });
      }
  • 相关阅读:
    U盘支持启动windows和Linux
    emacs安装
    npm 安装指定的第三方包
    npm安装第三方包
    npm 安装淘宝镜像
    ssm 环境搭建
    gitBook安装简介
    git 博客搭建
    git 多人开发
    git ssh提交
  • 原文地址:https://www.cnblogs.com/ibeisha/p/treeview.html
Copyright © 2020-2023  润新知