微信小程序怎么实现tabBar模板(tabbar,微信小程序,编程语言)

时间:2024-05-01 23:41:31 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

众所周知,微信小程序的tabBar都是新开页面的,而微信文档上又表明了最多只能打开5层页面。这样就很容易导致出问题啦,假如我的tabBar有5个呢?下面是微信原话:

一个应用同时只能打开5个页面,当已经打开了5个页面之后,wx.navigateTo不能正常打开新页面。请避免多层级的交互方式,或者使用wx.redirectTo

因此这几天想着根据微信tabBar数组来自定义模板供页面调用。不过我在list里面每个对象都增加了一个selectedColor和active属性,方便对每个tabBar当前页做样式,如果不传直接使用设置的selectedColor。因此这串数据只能设定在各个页面下,不能设定在公用的app.js配置文件下,稍微有点代码冗余,下次研究下怎么直接配置到app.js完善下。

只要新建一个tarBar.wxml模板页,然后引用模板的页面传入数据即可,代码如下:

<templatename="tabBar"><viewclass="flex-hflex-hsbtab-bar"><blockwx:for="{{tabBar.list}}"wx:key="pagePath"><navigatorurl="{{item.pagePath}}"open-type="redirect"class="menu-item"><imagesrc="{{item.selectedIconPath}}"wx:if="{{item.active}}"></image><imagesrc="{{item.iconPath}}"wx:if="{{!item.active}}"></image><text>{{item.text}}</text></navigator></block></view></template>

接下来进行测试,首先是index.js的配置对象:

//配置tabBartabBar:{"color":"#9E9E9E","selectedColor":"#f00","backgroundColor":"#fff","borderStyle":"#ccc","list":[{"pagePath":"/pages/index/index","text":"主页","iconPath":"../../img/tabBar_home.png","selectedIconPath":"../../img/tabBar_home_cur.png",//"selectedColor":"#4EDF80",active:true},{"pagePath":"/pages/village/city/city","text":"目的地","iconPath":"../../img/tabBar_village.png","selectedIconPath":"../../img/tabBar_village_cur.png","selectedColor":"#4EDF80",active:false},{"pagePath":"/pages/mine/mine","text":"我的","iconPath":"../../img/tabBar_mine.png","selectedIconPath":"../../img/tabBar_mine_cur.png","selectedColor":"#4EDF80",active:false}],"position":"bottom"}

index.wxml引入模板:

<importsrc="../../template/tabBar.wxml"/><templateis="tabBar"data="{{tabBar:tabBar}}"/>

接下来是mine.js文件引入配置对象:

//配置tabBartabBar:{"color":"#9E9E9E","selectedColor":"#f00","backgroundColor":"#fff","borderStyle":"#ccc","list":[{"pagePath":"/pages/index/index","text":"主页","iconPath":"../../img/tabBar_home.png","selectedIconPath":"../../img/tabBar_home_cur.png",//"selectedColor":"#4EDF80",active:false},{"pagePath":"/pages/village/city/city","text":"目的地","iconPath":"../../../img/tabBar_village.png","selectedIconPath":"../../../img/tabBar_village_cur.png","selectedColor":"#4EDF80",active:false},{"pagePath":"/pages/mine/mine","text":"我的","iconPath":"../../img/tabBar_mine.png","selectedIconPath":"../../img/tabBar_mine_cur.png","selectedColor":"#4EDF80",active:true}],"position":"bottom"}

mine.wxml引入模板:

<importsrc="../../template/tabBar.wxml"/><templateis="tabBar"data="{{tabBar:tabBar}}"/>

最后演示如下:

微信小程序怎么实现tabBar模板

方案二,我把配置数据统一放在app.js文件,通过点击跳转页面后在把数据添加到当前页面实例上,具体做法如下:

1、app.js文件配置:

//app.jsvarnet=require('common/net');vara_l,a_d={},a_cbSucc,a_cbSuccFail,a_cbFail,a_cbCom,a_h,a_m;App({onLaunch:function(){varthat=this;},//修改tabBar的active值editTabBar:function(){var_curPageArr=getCurrentPages();var_curPage=_curPageArr[_curPageArr.length-1];<span>//相当于Page({})里面的this对象</span>var_pagePath=_curPage.__route__;if(_pagePath.indexOf('/')!=0){_pagePath='/'+_pagePath;}vartabBar=this.globalData.tabBar;for(vari=0;i<tabBar.list.length;i++){tabBar.list[i].active=false;if(tabBar.list[i].pagePath==_pagePath){tabBar.list[i].active=true;//根据页面地址设置当前页面状态}}_curPage.setData({tabBar:tabBar});},globalData:{userInfo:null,//配置tabBartabBar:{"color":"#9E9E9E","selectedColor":"#f00","backgroundColor":"#fff","borderStyle":"#ccc","list":[{"pagePath":"/pages/index/index","text":"主页","iconPath":"/pages/templateImg/tabBar_home.png","selectedIconPath":"/pages/templateImg/tabBar_home_cur.png","selectedColor":"#4EDF80",active:false},{"pagePath":"/pages/village/city/city","text":"目的地","iconPath":"/pages/templateImg/tabBar_village.png","selectedIconPath":"/pages/templateImg/tabBar_village_cur.png","selectedColor":"#4EDF80",active:false},{"pagePath":"/pages/mine/mine","text":"我的","iconPath":"/pages/templateImg/tabBar_mine.png","selectedIconPath":"/pages/templateImg/tabBar_mine_cur.png","selectedColor":"#4EDF80",active:false}],"position":"bottom"}}})

2、index.js+mine.js+city.js页面使用:

varApp=getApp();Page({data:{detail:{},},onLoad:function(options){App.editTabBar();//添加tabBar数据varthat=this;}})
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:微信小程序怎么实现tabBar模板的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:mpvue的小程序markdown适配的方法下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18