
Security News
AGENTS.md Gains Traction as an Open Format for AI Coding Agents
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
weex-tabbar
Advanced tools
weex custom tabbar Component , Support children component and Label text
weex custom tabbar Component , Support children component and Label text(weex自定义tabbar组件,支持label文字显示)
npm install weex-tabbar --save
再引用:
require("weex-tabbar");
<template>
<tabbar id="tabbar" bgopacity="0.9" tabs="{{tabItems}}" selected="{{page}}" class="tabbar"></tabbar>
</template>
<style>
.tabbar{
width:750;
z-index: 10;}
</style>
<script>
require("weex-tabbar");
module.exports = {
data:{
page:0,//默认选择的是第一个页面
tabItems: [//配置每个tabbar
{
title: "首页",
defaultTitleColor: "#000",
image: "http://gtms01.alicdn.com/tps/i1/TB1qw.hMpXXXXagXXXX9t7RGVXX-46-46.png",
selectedImage: "http://gtms04.alicdn.com/tps/i4/TB16jjPMpXXXXazXVXX9t7RGVXX-46-46.png",
activeTitleColor:"#db3652"
},
{
title: "最新",
defaultTitleColor: "#000",
image: "http://gtms03.alicdn.com/tps/i3/TB1LEn9MpXXXXaUXpXX9t7RGVXX-46-46.png",
selectedImage: "http://gtms02.alicdn.com/tps/i2/TB1qysbMpXXXXcnXXXX9t7RGVXX-46-46.png",
activeTitleColor:"#db3652"
},
{
title: "购物车",
defaultTitleColor: "#000",
image: "http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png",
selectedImage: "http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png",
activeTitleColor:"#db3652",
haslabel:true,
labelName:"cart",
label:5,
},
{
title: "个人中心",
defaultTitleColor: "#000",
image: "http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png",
selectedImage: "http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png",
activeTitleColor:"#db3652"
}
],
}
}
</script>
注意:tabs
只有2~5个之间的tab才会显示正确,所以如果你tab大于5个或者少于2个,请自己手动调整样式.
tabbar有以下两个属性:
tabs
:一个包含了tab信息的数组.selected
:默认开始选中的tab.bgopacity
:背景透明度,值为0~1.其中tabs
中的tab有以下几个属性:
{
title: "个人中心",//tab标签文字
defaultTitleColor: "#000",//标签未激活时显示的颜色
image: "http://gtms01.alicdn.com/tps/i1/TB1B0v5MpXXXXcvXpXX9t7RGVXX-46-46.png",//标签未激活时显示的图片
selectedImage: "http://gtms04.alicdn.com/tps/i4/TB1NxY5MpXXXXcrXpXX9t7RGVXX-46-46.png",//标签选中后的图片
activeTitleColor:"#db3652",//激活时的文字颜色
haslabel:true,//是否有标签
labelName:"cart",//标签的名id(唯一)
label:5,//标签显示数字
labelColor:"#db3652",//标签背景色
}
上面中的labelName
属性是这个label的唯一值,所以不能与其它的label名字相同,后面我们会用到这个属性来更改属性label
的值.
切换页面这个操作tabbar已经封装好了,剩下的是我们需要在父组件中和tabbar组件通信即可.
如果你已经下载了本库,你可以打开根目录下的index.we
文件,这是我们的父组件,而目录components
下的文件都是子组件,我们可以利用父组件和子组件来实现兄弟组件之间的通信(不懂为何weex中没有类似vuex的实现,而react-native都有redux的实现了).
打开index.we
文件看第五行:
<tab1 class="page" if="page===0" style="z-index:{{page===0?5:0}}"></tab1>
这是我们第一个内容展示页,之前版本的tab1页面的显示与否都是由属性display
来控制的,现在由z-index
和if
控制,因为自从weex更新后发现display
属性被弃用.
对于html5来说建议不用if
来控制,实验中发现切换缓慢,所以如果是主要实现html5折这边的话请删掉这个,而手机端必须使用,否则无法实现切换效果.
感兴趣的同学可以打开在项目中的html5
文件地下的index.html
文件测试一下.
再看105行:
// 监听子组件tabbar发送过来的消息
this.$on("switchPage",(e)=>{
this.page = e.detail.page;
});
这是tabbar通知父组件:你要换页了.
这个大部分同学应该都知道,而tabbar页封装好了通信接口,只需要调用即可.
请看到第108行:
// 监听子组件index发送过来的消息
this.$on("addGoodsNumber",(e)=>{
// 再根据消息传递给tabbar
this.$broadcast("tabbarAccept",{
action:e.detail.action,//执行的动作,包含"add","minus","set"
target:e.detail.target,//执行的目标
value:e.detail.value,//自定义字段
})
});
父组件监听其它子组件传递过来的信息,然后通过父组件分发tabbarAccept
到tabbar组件那里去,tabbar接受三个信息:
action
:需要执行的动作,有三个字段:"add","minus","set"target
:这是需要执行动作的对象,也就是上面开始说的labelName
.value
:数字类型,如果action
是"add",那么一次增加的值就是value
,同理"minus",而"set"的时候就是设置值为value
.不同于官方定死tabbar的位置,这里的tabbar可以隐藏和显示,和上面一样,需要你在自己组件中通信通知tabbar来执行动作:
请看到第119行:
// 隐藏tabbar
this.$on("State",(e)=>{
// 再根据消息传递给tabbar
this.$broadcast("tabbarState",{
state:e.detail.state
});
});
这里的state有两个字段:"show"和"hide",表示当前需要显示还是隐藏,接下来还需要在其他组件中添加检测才能实现这个功能,比如在tab1.we
文件中:
<!-- 3行 -->
<text ondisappear="tabbarState" onappear="tabbarState" class="text" style="color:{{color}}">{{text}}</text>
// 79行
tabbarState(event){
this.$dispatch("State",{
state:event.direction==="up"?"hide":"show"
});
}
官方已经提供了wxc-tabbar
组件供我们使用,但是在我使用的过程中发现这个组件不支持子组件,对于组件需要通信的来说,这是一个致命的问题,比如我点击页面的一个按钮,需要增加tabbar上的一个数字显示,可是并没有这个功能和方法,即使我再构造一个父组件也无法实现父子组件间通信(也不清楚是否是我方法错了),所以只好自己重新实现这个组件了.
FAQs
weex custom tabbar Component , Support children component and Label text
The npm package weex-tabbar receives a total of 0 weekly downloads. As such, weex-tabbar popularity was classified as not popular.
We found that weex-tabbar demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
AGENTS.md is a fast-growing open format giving AI coding agents a shared, predictable way to understand project setup, style, and workflows.
Security News
/Research
Malicious npm package impersonates Nodemailer and drains wallets by hijacking crypto transactions across multiple blockchains.
Security News
This episode explores the hard problem of reachability analysis, from static analysis limits to handling dynamic languages and massive dependency trees.