tabbar角标 小程序_关于小程序tabbar不支持传参的处理办法

无论是百度小程序还是微信小程序,app.json中规定的tabbar页面是不支持传参的,例如:

 服务项目 

上面的navigater跳转有个属性:openType="switchTab"意思是打开tabbar页面service,虽然有个参数typeid=6,但是typeid=6并不能呗tabbar页面接收,造成打开tabbar页面的时候用于都是默认栏目。

(1)第一步:通过bindtap绑定方法触发缓存,把typeid存起来

虽然tabbar不支持传参,但是我们可以通过缓存的方式获取传递的参数,那么上面的navigator直接跳转的方式就不行了,需要封装一个方法:

 服务项目 

index页面的“服务项目”通过bindtap绑定一个show_service方法,这个show_service会传递后边的data-*里边的所有参数。

在index.js中写上show_service方法:

show_service: function (e) {  var data = e.currentTarget.dataset;  var title = data.title; //获取传递的title var typeid = data.typeid; //获取传递的typeid var listtype = data.listtype; //获取传递的listtype //通过setStorageSync方法将typed存入stypeid中,名字可以自己任意定 wx.setStorageSync('stypeid', typeid)  wx.switchTab({ //通过switchTab方法跳转到对应页面 url: '/pages/service/service?typeid=' + typeid + "&&listtype=" + listtype, //后边参数其实无效可以直接写成:‘/pages/service/service’ })  }, 

这样我们就把用户点击首页所传递的参数typeid存到缓存里边了

(2)第二步:在service中去获取typeid

在service.js中的onload或者onshow中加入typeid的方法,为了兼容用户是直接通过tabbar进入的情况,需要一个默认的typeid,参考代码:

var stypeid = wx.getStorageSync('stypeid');//通过缓存获取typeid var typeid = stypeid ? stypeid : that.data.typeid; //如果stypeid存在读取,否则读取默认的typeid

然后我们可以直接通过getList()方法直接读取api获取内容列表了

that.getList(typeid);

说明:

(1)如果你不是通过首页的show_service方法进入service页面的,那么就不会触发更新缓存,所以typeid的值是不会变的,通过点击tabbar进入service页面会永远显示某一个页面,你可以在onHide方法中增加一个重置或者情况stypied的方法,不过不建议这么弄

(2)service页面的切换栏目后,我们可以在switch_tab方法中加入修改缓存的方法,动态存入当前栏目的typeid

switch_cat: function (e) {  var that = this;  var CATEGORYS = wx.getStorageSync('categorys')//调用栏目缓存  var data = e.currentTarget.dataset;  var typeid = data.typeid;  var listtype = data.listtype;  var curtypeid = data.typeid;  that.setData({  curtypeid: curtypeid,  listtype: listtype,  page: 1  })  wx.setNavigationBarTitle({  title: CATEGORYS[curtypeid]['typename'] + '-' + wx.getStorageSync('system').seotitle  });  that.getList(typeid);  }, 

不过,切换栏目时候,要不要更改缓存,根据自己需要,没必要必须切换

同理,如果你设置新闻页面、案例页面等页面的时候可以用同样的方法 存入缓存然后新闻、案例通过缓存判断需要显示的栏目

比如新闻:

wx.setStorageSync('newsid', typeid)//存入newsid 
6d882bf7443e4f50aadf585401d4b448.png

dedecms小程序插件,让你无需有php或sql基础,不需要依赖任何第三方网站授权,后台一键安装,小程序分分钟配置完成,让你拥有真正属于自己的小程序!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值