小程序+vant:使用模板动态生成tabs

该博客介绍了一个需求,即同步PC的菜单权限并在小程序中以tabs形式展示二级菜单。作者通过利用小程序的模板功能,实现了动态生成tabs选项卡,避免了使用wx:if进行逐个判断的方法。当点击tabs时,可以通过索引获取对应子组件ID并触发事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

需求:同步pc的菜单权限,侧边出一级菜单,点击一级菜单后收起,界面用tabs选项卡形式出二级菜单!

这种就需要动态去生成tabs选项卡,除非你想全部引入,然后用wx:if一个个判断;
当时就在想小程序有什么是类似于vue的component,然后就想到了模板;

处理前二级菜单结构
menuList:[
	{title:‘菜单1’,key:'1',component:'views/page/PageOne/list'},
	{title:‘菜单2’,key:'2',component:'views/page/PageTwo/list'}
]
处理后
menuList:[
	{title:‘菜单1’,key:'1',component:'PageOne'},
	{title:‘菜单2’,key:'2',component:'PageTwo'}
]
模板页
<template name="PageOne">
  <PageOne id="PageOne" bind:getSearch="getSearch" menuId="{{menuId}}" />
</template>
<template name="PageTwo">
  <PageTwo id="PageTwo" bind:getSearch="getSearch" menuId="{{menuId}}" />
</template>
承载页wxml
<van-tabs wx:if="{{tabShow}}" ellipsis="{{false}}" active="{{ curIndex }}" custom-class="vanttabs" swipeable="{{true}}" bind:change="tabsChange">
    <van-tab title="{{item.title}}" name="{{index}}" wx:for="{{menuList}}" wx:key="key">
       <template is="{{item.component}}" data="{{menuId}}" />
     </van-tab>
</van-tabs>

在这里,我模板中的name跟组件id用的是一样的,这样在点击tabs触发组件页方法时,就可以通过获取当前tabs的索引获取到对应的id然后触发子组件事件

const {menuList,tabIndex} = this.data;
this.selectComponent(`#${menuList[tabIndex].component}`).getData();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值