zoukankan      html  css  js  c++  java
  • 微信小程序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); //递归关闭节点
        });
      }
  • 相关阅读:
    237.Delete Node in a Linked List
    235.Lowest Common Ancestor of a Binary Search Tree
    234.Palindrome Linked List
    232.Implement Queue using Stacks
    231.Power of Two
    226.Invert Binary Tree
    225.Implement Stack using Queues
    Vue概述
    Git分布式版本控制工具
    分布式RPC框架Apache Dubbo
  • 原文地址:https://www.cnblogs.com/ibeisha/p/treeview.html
Copyright © 2011-2022 走看看