最近写小程序,有一个选择行业的需求,准备实现以下效果:

使用van-collapse和单选按钮实现。

遇到一个问题,不知道需要递归几层,写死10个,8个应该也是可以的,估计会绕晕,哈哈~

网上查了一下,可以使用组件(Component)的方式实现。

具体实现如下:

1、创建component的文件夹,再创建collapse-radio文件夹,右键 点击 “新建Component”,取名index,生成组件。结构如下:

2、index.wxml文件的代码如下:

<!--component/collapse-radio/index.wxml-->
<van-collapse value="{{ activeName[item.id] }}" data-id="{{item.id}}" bind:change="onChange" accordion><view wx:for="{{item.children}}" wx:key="id"><van-collapse-item wx:if="{{!item.is_leaf}}" title="{{item.name}}" name="{{item.id}}" data-index="{{index}}" data-id="{{item.id}}"><collapse-radio item="{{item}}"></collapse-radio></van-collapse-item><view wx:else> <van-cell title="{{item.name}}" value-class="value-class"><van-radio name="{{item.id}}" /></van-cell></view></view>
</van-collapse>

3、index.js代码如下:

// component/collapse-radio/index.js
Component({/*** 组件的属性列表*/properties: {item: Object},/*** 组件的初始数据*/data: {activeName: {}},/*** 组件的方法列表*/methods: {// 展开面板onChange(event) {console.log(event);const id = event.target.dataset.id;const activeName = this.data.activeName;activeName[id] = event.detail;console.log(activeName);this.setData({activeName: activeName});}}
})

4、在app.json中配置组件:

5、在页面中使用

<van-radio-group><collapse-radio item="{{item}}"></collapse-radio>
</van-radio-group>

6、js代码

const list = [{id: '1',name: '金融业',is_leaf: 0,children: [{id: '11',name: '银行业',is_leaf: 0,children: [{id: '111',name: '中央银行',is_leaf: 1}, {id: '112',name: '商业银行',is_leaf: 1}, {id: '113',name: '其他银行',is_leaf: 1}]}, {id: '12',name: '证券业',is_leaf: 1}, {id: '13',name: '保险业',is_leaf: 0}]
},{id: '2',name: '教育业',is_leaf: 1
}, {id: '3',name: '房地产业',is_leaf: 0
}];
Page({/*** 页面的初始数据*/data: {item:{id: '0',name: '',is_leaf: 0,children:list}},/*** 生命周期函数--监听页面加载*/onLoad: function (options) {},/*** 生命周期函数--监听页面初次渲染完成*/onReady: function () {},/*** 生命周期函数--监听页面显示*/onShow: function () {},/*** 生命周期函数--监听页面隐藏*/onHide: function () {},/*** 生命周期函数--监听页面卸载*/onUnload: function () {},/*** 页面相关事件处理函数--监听用户下拉动作*/onPullDownRefresh: function () {},/*** 页面上拉触底事件的处理函数*/onReachBottom: function () {},/*** 用户点击右上角分享*/onShareAppMessage: function () {}
})

就可实现递归效果。

转载于:https://www.cnblogs.com/zhaidq/p/11227532.html

微信小程序 页面递归生成相关推荐

  1. 微信小程序 界面从右边滑出_微信小程序页面溢出左右滑动问题

    微信小程序 页面中view设置width:100%之后,页面右边会多出一块白区域,并且可以左右滑动,解决方法是给这个view加一个box-sizing:border-box; 欢迎使用Markdown ...

  2. 微信小程序页面上下滚动、左右滑动(二)

    系列文章目录 微信小程序页面上下滚动.左右滑动(一) 文章目录 系列文章目录 前言 项目结构 解决问题1 1.pretest页面 2.test页面 解决问题2 总结 参考 前言 在上一篇文章,讲解了再 ...

  3. 微信小程序页面竖向滚动逻辑

    微信小程序页面竖向滚动逻辑 1.实现下面类似的数组 注:下面这个生成的数组最好是整数,滑动的时候会失去精度的,要不然你永远会差一点,让你崩溃的.而且你永远不知道差在哪里. this.leftScrol ...

  4. 微信小程序 页面传值文本解密问题

    微信小程序 页面传值文本解密问题 遇到问题 最近在做小程序,遇到这样一个需求: 将百度的Ueditor编辑器存入的文本数据显示在小程序中,需要保留之前的样式,这就用到了 WxParse插件,它能够用解 ...

  5. 微信小程序-页面间如何进行传递数据(通信)

    前言 在小程序中组件与组件之间的通信是通过在引用组件处,在自定义组件上添加自定义属性实现的,子组件内部通过properties进行接收 更多关于组件与组件之间的通信可参考小程序-实现自定义组件以及自定 ...

  6. 微信小程序入门1--新建微信小程序页面

    微信小程序入门1–新建微信小程序页面 在新建微信小程序后会自动生成一个DEMO实例,我们可以在实例中修改自己所需的内容,当内容过多时,实例中的页面不足以满足我们的需求,因此需要新建微信小程序页面. 本 ...

  7. 微信小程序页面溢出左右滑动问题

    微信小程序 页面中view设置width:100%之后,页面右边会多出一块白区域,并且可以左右滑动,解决方法是给这个view加一个box-sizing:border-box; 欢迎使用Markdown ...

  8. 微信小程序页面间通信的5种方式

    微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...

  9. 微信小程序页面搜索框查询(无后台接口情况下)

    微信小程序页面搜索框查询(无后台接口情况下) 效果图: wxml <view class="container"><view class="goodsl ...

  10. 小程序向Java传值,微信小程序 页面传值详解

    微信小程序 页面传值详解 一. 跨页面传值. 1 . 用 navigator标签传值或 wx.navigator, 比如 这里将good_id=16 参数传入detail页面, 然后detail页面的 ...

最新文章

  1. nodejs生成多层目录和生成文件的通用方法
  2. Android 和 Chrome OS 融合的可能性
  3. python测试题 --- 列表元素处理
  4. python切换虚拟环境和全局_为什么python虚拟环境启动后依然使用全局的python和pip...
  5. 论文Express | 英伟达最新:多模态无监督图像迁移网络框架
  6. 配置vs2008和udk与nFringe
  7. 光立方体c语言程序,444光立方程序怎么写 光立方原理图、源代码及制作教程
  8. 华为中兴FPGA面试题总结
  9. Sobel边缘检测 - 梯度算子介绍
  10. cl.b8y.php,群晖如何重装系统
  11. Mybatis 批量更新运行异常,数据库 postgres
  12. 金蝶KIS迷你版标准版年度结账
  13. 水晶高跟鞋(测试版)
  14. 全基因组测序数据分析---WGS主流程
  15. 北京理工大学:《Python语言程序设计》____笔记整理
  16. Centos7(Linux)下安装Oracle11g
  17. 用 22 张照片打开 23 年
  18. win10无线投屏_miracast投屏的未来
  19. Asp.Net MVC4的学习概况
  20. javacv-音视频和图像处理

热门文章

  1. [转]DPM2012系列之十九:配置辅助备份服务器
  2. 新型恶意软件—— Grizzly攻击Telegram
  3. 35.5. array route
  4. tomcat7简单优化
  5. 安卓中圆角背景图被拉伸的解决方案——.9.png
  6. DatabaseMetaData的用法(转)
  7. UltraEdit怎样修改保存默认的后缀文件名
  8. Java获取浏览器请求头(User-Agent),分析浏览器信息,系统信息的几种办法
  9. 分区工具parted的详解及常用分区使用方法
  10. JDK17 带来什么新特性?网友:不好意思,我还在JDK6踏步走...