微信小程序 tree组件

1. 根目录下新建tree组件 /components/tree/tree.wxml.js.wxss.json

(1). tree.wxml

<!-- 多级树 -->
<view class="tree_container">
  <!-- 一级菜单 -->
  <view style="padding-left: {{treeListIndex*8}}px">
    <view bindtap='tapTreeItem' class="weui-cell weui-cell_access" data-item="{{treeList}}">
      <view class="weui-cell__bd">
          <view class="tree_text">{{treeList.text}}</view>
      </view>
      <view wx:if="{{treeList.nodes}}" class="weui-cell__ft weui-cell__ft_in-access {{!collapse ? 'nocollapse_icon' : ''}}"></view>
    </view>
    <!-- 递归菜单 -->
    <block wx:if="{{treeList.nodes && !collapse}}">
      <tree wx:for='{{treeList.nodes}}' wx:key='id' treeList='{{ item }}' treeListIndex='{{treeListIndex+1}}' bind:treeTap="treenodetap"></tree>
    </block>
  </view>
</view>

(2). tree.js

// components/tree/tree.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    treeListIndex: {// 默认为0,当前循环的第几层,用于tree样式展示
      type: Number,
      value: 0
    },
    treeList: Object
  },

  /**
   * 组件的初始数据
   */
  data: {
    collapse: true // 每个tree组件对应自己的collapse属性;(true:折叠/false:展开;)
  },

  /**
   * 组件的方法列表
   */
  methods: {
    tapTreeItem: function(e) { // 点击项
      var item = e.currentTarget.dataset.item;
      if (item.nodes !== undefined) { // 其下有子节点,可折叠展开操作
        this.setData({ // 折叠展开操作
          collapse: !this.data.collapse,
        })
      } else { // 最终子节点
        this.triggerEvent('treeTap', { item }); // 将当前的点击项的数据传递给父页面
      }
    },
    treenodetap: function(e) { // 递归的最终子节点
      var item = e.detail.item;
      this.triggerEvent('treeTap', { item }); // 将当前的点击项的数据传递给父页面
    }
  }
})

(3). tree.wxss

/* components/tree/tree.wxss */
@import '/weui.wxss'; // 引入weui.wxss; 微信提供的组件库

.tree_container {
  background:#fff;
  border-bottom: 1rpx solid rgba(0,0,0,.1);
}
.nocollapse_icon { /*展开图片*/
  transform: rotate(90deg);
}
.tree_text {
  display: inline-block;
  vertical-align: middle;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  width: 90%;
}

(4). tree.json

{
  "component": true,
  "usingComponents": {
    "tree": "/components/tree/tree"
  }
}

2. page文件夹下新建页面detail /page/detail/detail.wxml/wxss/js/json

(1). detail.wxml

<view>
  <tree treeList="{{treeList}}" bind:treeTap="treeTap"></tree>
</view>

(2). detail.js

data: {
    treeList: {
      text: '第一单元',
      id: 0,
      nodes: [
        {
          text: '理财入门之基本经济指标与经济学原理',
          id: 1,
          nodes: [
            {
              text: '正确理解理财之理财就是理生活',
              id: 2,
              nodes: [
                {
                  text: '现金规划管理(上)',
                  id: 3,
                },
                {
                  text: '现金规划管理 (下)',
                  id: 4,
                },
              ]
            },
            {
              text: 'Child 2',
              id: 5,
            }
          ]
        },
        {
          text: 'Parent 2',
          id: 6,
          nodes: [
            {
              text: 'Child 1',
              id: 7,
            },
            {
              text: 'Child 2',
              id: 8,
            }
          ]
        }
      ]
    }
  }

(3). detail.json

{
  "navigationBarTitleText": "树组件",
  "usingComponents": {
    "tree": "/components/tree/tree"
  }
}

3. 效果预览

原文地址:https://www.cnblogs.com/zero-zm/p/11624830.html

时间: 2024-08-30 09:33:55

微信小程序 tree组件的相关文章

微信小程序image组件binderror使用例子(对应html、js中的onerror)

官方文档  binderror HandleEvent 当错误发生时,发布到 AppService 的事件名,事件对象event.detail = {errMsg: 'something wrong'} 在微信小程序开发中,我们使用列表包含图片,如果这个图片链接404错误,那么我们应该给它提供一个默认的友好URL地址.html和js中使用onerror事件就可以了 <img src="image.gif" onerror="this.src='https:w.chesu

微信小程序image组件开发程序以及相关图片问题参考资料汇总

微信小程序image组件开发程序以及相关图片问题参考资料汇总,希望对大家小程序开发能有一定的参考和借鉴价值.以下汇总主要涉及到微信小程序image组件有关资源路径.缩放和剪裁模式等进行的探讨,无论是对微信小程序新手还是正在开发中的朋友都是很好的小程序学习资料. 微信小程序image组件必备基础知识: image组件默认宽度300px.高度225px image的属性mode有13种模式,其中4种是缩放模式,9种是裁剪模式 image组件开发教程汇总: 微信小程序自定义组件实现图片单指拖动.双指缩

微信小程序倒计时组件开发

今天给大家带来微信小程序倒计时组件具体开发步骤: 先来看下最终效果: git源:http://git.oschina.net/dotton/CountDown 分步骤-性子急的朋友,可以直接看最后那段代码. wxml文件放个text <text>second: {{second}} micro second:{{micro_second}}</text> 在js文件中调用 function countdown(that) {  var second = that.data.seco

微信小程序图表组件 wx-f2

摘自 杀个程序猿祭天  https://www.jianshu.com/p/6b9fe45f799f Github地址:https://github.com/antvis/wx-f2 AntV F2地址: AntV F2 微信小程序图表组件 wx-f2,源于 F2,专为移动而生 F2,专为移动而生的可视化解决方案,特为大家提供了微信小程序端版本,体积小巧,性能卓越,底层基于图形语法,可以提供非常丰富的图表类型. 可以使用微信扫描以下二维码先体验一番: image wx-f2 F2 的微信小程序版

微信小程序picker组件 - 省市二级联动

微信小程序picker组件自带省市区选择器,但是业务需求需要省市选择器,参考官方demo自己写了一个省市选择器 wxml文件 <view class="section"> <view class="section__title">省市二级联动demo</view> <picker mode="multiSelector" bindchange="bindMultiPickerChange&quo

iView Weapp微信小程序UI组件库中i-input的使用

iView Weapp微信小程序UI组件库为小程序的开发提供了良好的交互界面,组件库自定义了一系列组件,具有较强的开发友好性,但一些组件与微信小程序原生组件的使用方式有差异. i-input组件是该框架自定义的输入框组件,与微信中input具有相同功能. 在使用i-input输入值时,可以增加其bind:change="myInput" 属性,如: wxml: <i-input type="number" right  maxlength="2&qu

微信小程序气泡组件

资料 网址 微信小程序气泡组件 https://github.com/byk04712/weapp-popover 原文地址:https://www.cnblogs.com/cag2050/p/12605725.html

微信小程序开发—组件及API

微信小程序框架为开发者提供了一系列的组件和API接口. 组件主要完成小程序的视图部分,例如文字.图片显示.API主要完成逻辑功能,例如网络请求.数据存储.音视频播放控制,以及微信开放的微信登录.微信支付等功能. 组件 官方文档:https://mp.weixin.qq.com/debug/wxadoc/dev/component/ 对于开发文档,个人建议先了解其整体框架,了解其提供了哪些组件,再联想到这些组件会用在哪些产品的哪些功能.对于接口也是一样,整体了解,而不需要细看. 熟悉了文档的结构,

微信小程序UI组件、开发框架、实用库

UI组件 weui-wxss ★852 - 同微信原生视觉体验一致的基础样式库 Wa-UI ★122 - 针对微信小程序整合的一套UI库 wx-charts ★105 - 微信小程序图表工具 wemark ★85 - 微信小程序Markdown渲染库 WeZRender ★36 - 微信小程序Canvas增强组件 wetoast ★21 - 仿照微信小程序提供的showToast功能 wxapp-charts ★20 - 微信小程序图表charts组件 WeiXinProject ★18 - 列