基于微信小程序的小型UI库(BSTCommon插件)
小程序插件使用腾讯小程序插件文档地址 https://mp.weixin.qq.com/wxopen/plugindevdoc?appid=wx3f99db061dbc1dd3&token=&lang=zh_CN
app.json配置
"plugins": { "BSTCommon": { "version": "1.0.9", "provider": "wx3f99db061dbc1dd3" } },
需要使用插件的页面
<!--json内-->
"usingComponents": {
"calendar": "plugin://BSTCommon/calendar"
}
<!--wxml内-->
<calendar
type='range'
monthShowNum='{{3}}'
markerData="{{markerData}}"
monthShowDate="2019-08-01"
bindchange='ondatechange'
bindcheckStart='oncheckStart'
/>
<!--js内-->
let {
InitDateObj, //初始化时间类
patternGetValue, //取值模式
drillJSON, //下钻json数据
myFor, //循环
duplicateRemoval, //数组去重
hasKey, //判断对象是否含有某些值
formatCss, //格式化css字符串
cssObjToString, //将一个css样式对象转化为字符串
mergeCssStr, //合并css字符串、对象
Displacementer, //坐标换算类
initAryforJSON //初始化json数组
} = requirePlugin('BSTCommon');
//js内可以引入插件提供的一些类或者方法,不使用也可以不引入或按需引入
git代码下载使用
如果需要使用最新版的功能可将github上代码中plugin复制到本地项目中直接以自定义组件的形式引用
演示demo(小程序:ChiselUI)
flexBox:双栏弹性盒子引入组件时有可能开发工具会报(.wxss文件内)错;这个是样式警告,经咨询微信官方人员可以忽略。
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
start | String | false | "" | -- | 第一个容器的长度 |
end | String | false | "" | -- | 第二个容器的长度 |
vertical | Boolean | false | false | false/true | 是否垂直排列 |
noAutoZIndex | String | false | 0 | -- | 当前固定容器的z-index |
说明:start/end只传一个,传入的为固定容器,另外的容器自适应剩余空间。
示例代码
<flexBox start='20%'> <view slot='start'>这个是固定容器</view> <view slot='end'>这个是自适应容器</view> </flexBox> coder:条形码(一维码)/二维码生成组件
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
value | String | false | "" | -- | 需要生成条形码的字符串 |
type | String | false | "2d" | 1d/2d | 生成码的类型 |
encodingMethod | String | false | "code128" | std25、int25、ean8、ean13、upc、msi、code11、code39、code93、code128、codabar、datamatrix | 编码方式(当type为1d时生效) |
color | String | false | #000000 | #****** | 前景色 |
bgColor | String | false | #ffffff | #****** | 背景颜色 |
showText | Boolean | false | true | true/false | 是否显示文字 |
barCellWidth | Number | false | 2 | int | 单元格宽度(px)当type为1d时生效 |
barHeight | Number | false | 100 | int | 高度(px)当type为1d时生效 |
componentStyle | cssString | false | —— | —— | 组件容器的样式 |
loadTips | String | false | "您的码正在赶来..." | -- | 加载(绘制二维码)等待时提示语 |
textStyle | cssString | false | -- | -- | 显示文本的样式(value) |
padding | Number | false | 20 | -- | 整个码容器的内边距 |
说明:条形码/二维码的宽度跟随容器的宽度自适应计算,容器的宽度可通过componentStyle来设置。
evnets | event.detail | explain |
---|---|---|
change | {code:value} | 条形码/二维码生成(更新)完成后触发 |
示例代码
<--条形码--> <coder value='123456789' type='1d' encodingMethod='code93' barHeight='{{70}}' componentStyle='width:50%' bindchange='oncoderchange' /> <--二维码--> <coder value='https://www.tz12306.com' componentStyle='width:100%' /> modal:基础模态框
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | true | -- | dialog、drawer-bottom、drawer-right、drawer-top、drawer-left | 模态框的类型(居中、下、右、上、左) |
show | Boolean | true | false | true/false | 动态控制模态框的显示与隐藏 |
title | Boolean | false | false | false/true | 是否含有title |
bodyStyle | cssString | false | -- | -- | bodyCSS样式 |
maskStyle | cssString | false | -- | -- | maskCSS样式 |
contentStyle | cssString | false | -- | -- | contentCSS样式 |
time | Number | false | 300 | int | 动画时长(毫秒) |
noMaskEvnet | Boolean | false | false | true/false | 是否禁止mask点击事件 |
slot | explain |
---|---|
default | 主体 |
title | 头部 |
footer | 尾部 |
evnets | event.detail | explain |
---|---|---|
hide | -- | 模态框隐藏时触发事件 |
说明:此组件为底层组件支持5种类型,使用时需传入类型值、常用为dialog。
示例代码
<modal type='dialog' show='{{modalshow}}' bindhide='onhide' noMaskEvnet='{{true}}' bodyStyle='' title='{{true}}' > <view slot='title'>这是头部</view> <view>这是主体内容</view> <view slot='footer'>这是尾部</view> </modal> dialog:模态弹窗(基于modal)
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
show | Boolean | true | false | -- | 动态设置弹窗显示与隐藏 |
save | String | true | "确定" | -- | 保存按钮文字内容 |
openType | String | false | -- | share、launchApp、openSetting、feedback | 保存按钮的微信开放能力 |
bodyStyle | cssString | false | -- | -- | bodyCSS样式 |
cancelStyle | cssString | false | -- | -- | 取消按钮CSS样式 |
saveStyle | cssString | false | -- | -- | 保存按钮CSS样式 |
cancel | String | false | "取消" | -- | 取消按钮文字样式 |
noMaskEvnet | Boolean | false | false | true/false | 是否禁止mask点击事件 |
slot | explain |
---|---|
default | 主体 |
evnets | event.detail | explain |
---|---|---|
hide | -- | 模态框隐藏时触发事件 |
saveCallback | e.detail | 保存按钮点击时触发 |
cancelCallback | -- | 取消按钮点击时触发 |
examplePipe | {example:实例对象} | 组件渲染完成后触发的实例传输管道,返回当前实例对象(初始化可保存此实例对象,然后调用实例对象的show/hide来进行弹窗的显示与隐藏) |
说明:save与cancel同时存在时占位各为50%,如果只有save则为100%;如果获取到实例对象、可手动调用实例对象的show方法进行显示弹窗;show方法可接受一个参数OBJECT,其中key可以为props中所有的参数,执行时会覆盖组件初始传入的值(可实现一个组件,多处调用);其中content字段为特殊字段,可接受HTML字符串渲染
示例代码
<!--模板调用--> <dialog show='{{dialogshow}}' save='确定' noMaskEvnet='{{true}}' bindsaveCallback='onsaveclick' > <view>这是主体内容</view> </dialog> <!--实例调用--> //wxml内 <dialog bindexamplePipe='onexamplePipe'/> //js内 onexamplePipe:function(e){ let this.dialog=e.currentTarget.detail.example; //此实例还可以其他地方调用,如果传入与props相同的字段则覆盖props内的相应值 this.dialog.show({ content:'<div style="color:#999">我是HTML字符串内容哦</div>', saveCallback:function(e){ console.log("我是点击的回调",e) } }) } calendar:基础日历渲染器
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | false | point/range | "point" | 日历类型(点选/范围选择) |
title | Array | false | [] | ["日", "一", "二", "三", "四", "五", "六"] | 日历星期栏内容设置,数组长度为7 |
value | Array | false | [] | ["YYYY-MM-DD"] | 初始化选择的日期,type为range时数组可有两个值 |
monthShowDate | String | false | 当前月份 | "YYYY-MM-DD" | 显示第一个月月份时间,如果不设置则为当月01号,日历渲染则根据月份动态渲染,如果设置,可固定显示一个时间段 |
monthShowNum | Number | false | 1 | int | 当前渲染的月份数,如果没有必要,请不要设置过大影响渲染性能 |
markerData | Object | false | {} | {"YYYY-MM-DD":{top,bottom,topStyle,bottomStyle,style}} | 特殊日期数据对象,例如{"2019-08-08":{bottom:"立秋",bottomStyle:"color:red"}} |
boxStyle | cssString | false | -- | -- | 容器外部盒子样式 |
titleStyle | cssString | false | -- | -- | 星期栏样式 |
todayStyle | cssString | false | -- | -- | "今天"日期样式 |
checkedStyle | cssString | false | -- | -- | 选中日期样式 |
checkedFGStyle | cssString | false | -- | -- | 选中日期前景样式 |
rangeStyle | cssString | false | -- | -- | 选中范围日期样式(type=range有效) |
monthTitleStyle | cssString | false | -- | -- | 每个月的月份title样式 |
evnets | event.detail | explain |
---|---|---|
examplePipe | {{setMethod:function(methName,fun){}}} | 日历渲染完成后的实例传输管道,返回calendar实例的setMethod(注入方法)方法,此方法接受一个需要注入方法的名称methName(目前只支持"blackout")和一个回调函数(function,回调参数为一个object,内含当前日期的相关数据),此个回调函数必须输出一个(Boolean)布尔值来决定当前天是否禁止点击 |
change | ["YYYY-MM-DD","YYYY-MM-DD"] | 选中的值改变时触发,返回数组,type=range时为两个值 |
checkStart | ["YYYY-MM-DD"] | 范围选择开始事件,只有当type=range时才触发,返回的数组只有一个值(此事件可配合change事件来判断当前用户操作是否选择范围时间完成) |
说明:calendar组件为dateSelector的基础渲染组件,大部分参数相同,onexamplePipe使用也相同
示例代码
<!--wxml内--> <calendar type='range' monthShowNum='{{3}}' markerData="{{markerData}}" monthShowDate="2019-08-01" bindchange='ondatechange' bindcheckStart='oncheckStart' /> <!--js内--> data: { markerData:{ "2019-08-08": { bottom:"立秋"}, "2019-08-15": { bottom:"中元节"}, "2019-08-23": { bottom:"处暑"}, "2019-09-08": { bottom:"白露"}, "2019-09-10": { bottom:"教师节"}, "2019-09-13": { top:"休", bottom:"中秋"}, "2019-09-14": { top:"休"}, "2019-09-15": { top:"休"}, "2019-09-23": { bottom:"秋分"}, "2019-09-29": { top:"班"} }, }, ondatechange:function(e){ console.log(e) }, oncheckStart:function(e){ console.log(e) }, dateSelector:日历选择器(基于calendar、modal)
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
show | Boolean | true | false | true/false | 动态控制日历选择器的显示与隐藏 |
value | Array | false | [] | ["YYYY-MM-DD"] | 日历选择的日期 |
title | String | false | -- | -- | 头部标题内容,当设置值为'auto'时,即为动态展示当前选择的日期 |
type | String | false | "point" | point/range | 日历类型point为点选;range为范围选择 |
monthShowDate | String | false | -- | YYYY-MM-DD | 第一个显示月的时间 |
monthShowNum | Number | false | 1 | int | 初始化渲染多少个月 |
bodyStyle | cssString | false | -- | -- | 类似modal的bodyStyle |
titleStyle | cssString | false | -- | -- | 头部title的样式内容 |
dateTitleStyle | cssString | false | -- | -- | 日历头部的样式(就是星期那一行) |
float | String | false | "bottom" | top、right、bottom、left | 浮动方式 |
markerData | Object | false | {} | {"YYYY-MM-DD":{top:"这是显示在日期day数字上方的文字",bottom:"这是显示在下方的内容",topStyle:"",bottomStyle:"",style:""}} | 特殊日期显示内容(例如:春节、中秋),可相应位置设置样式 |
checkedStyle | cssString | false | -- | -- | 选中的样式 |
checkedFGStyle | cssString | false | -- | -- | 选中的前景样式;此样式因为calender组件内部结构特殊,需过滤掉影响宽高的css属性,过滤规则包含[/^width/, /^height/, /^padding\S*/, /^margin\S*/]凡是匹配此类属性,都将设置无效; |
rangeStyle | cssString | false | -- | -- | 范围样式 |
monthTitleStyle | cssString | false | -- | -- | 月份标题样式 |
leftButtonStyle | cssString | false | -- | -- | 左边(more/取消)按钮样式 |
sureStyle | cssString | false | -- | -- | 确定按钮样式 |
todayStyle | cssString | false | -- | -- | 今天的样式 |
hasMore | Boolean | false | false | true/false | 是否开启更多按钮,当设置为true时,左边按钮内容由“取消”变为“more”并且有四个默认的功能(后续会拓展自定义功能按钮) |
evnets | event.detail | explain |
---|---|---|
change | [YYYY-MM-DD] | 选择日期完成后触发,返回参数为选择的日历数组 |
examplePipe | {setMethod:function(methName,fun){}} | 日历渲染完成后的实例传输管道,返回calendar实例的setMethod(注入方法)方法,此方法接受一个需要注入方法的名称methName(目前只支持"blackout")和一个回调函数(function,回调参数为一个object,内含当前日期的相关数据),此个回调函数必须输出一个(Boolean)布尔值来决定当前天是否禁止点击 |
说明:examplePipe或许比较难以理解(因遵循小程序插件开发规范,props不能传入非json数据类型的数据,所以props不能传入function;故只能通过这种方式将一个条件方法注入实例内部;来实现最大灵活的的日期禁用状态渲染)
示例代码
<!--wxml内--> <dateSelector value="{{datevalue}}" bodyStyle='height:800rpx' monthShowNum='{{3}}' bindexamplePipe='dipachExample' bindchange='ondatechange' > <button>日期选择</button> </dateSelector> <!--js内--> dipachExample:function(e){ //实例管道会返回一个注入方法函数(当前只支持注入方法blackout) let now=new Date().getTime()-1000*60*60*24, setMethod = e.detail.setMethod; setMethod("blackout",(dateObj)=>{ return now <= dateObj.timeStamp }) } count:计数器
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | false | "default" | img/default | 计数器类型;img为icon为图形 |
value | Number | false | 0 | int | 设置计数器的值(可动态设置) |
max | Number | false | 100 | int | 最大值 |
min | Number | false | 0 | int | 最小值 |
interval | Number | false | 1 | int | 递增/递减的间隔数 |
iconURL | Object | false | {"R":[],"P":[]} | -- | icon图片的URL路径对象{R:[],P:[]}其中R为递减的图片路径集合,集合包含两个值;第一个为可点击状态,第二个为禁止点击状态;P为递增 |
textStyle | cssString | false | -- | -- | 中间数字的样式 |
evnets | event.detail | explain |
---|---|---|
change | {value:number} | 数字改变时候出发 |
示例代码
<count max='{{10}}' bindchange='oncountchange' /> drawer:抽屉盒子
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
switch | Boolean | false | false | true/false | 动态设置抽屉盒子的开关 |
iconRotate | Array | false | ["45","135"] | -- | 右边icon的展开与闭合的旋转角度 |
contentStyle | cssString | false | -- | -- | 内容容器样式 |
titleStyle | cssString | false | -- | -- | 头部样式 |
slot | explain |
---|---|
title | 头部内容 |
content | 主体内容 |
示例代码
<drawer switch='{{true}}' > <view slot='title'>我是标题</view> <view slot='content'>主体内容</view> </drawer> STBox/STItem:滚动吸顶盒子(组)
STBox
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
scrollTop | Number | false | 0 | int | 容器初始滚动值 |
boxStyle | cssString | false | -- | -- | 组件容器样式 |
STItem
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
boxStyle | cssString | false | -- | -- | 组件容器样式 |
contentStyle | cssString | false | -- | -- | 内容样式 |
translateY | Number | false | 0 | int | 垂直方向移动距离 |
triggerOffset | Number | false | 0 | int | 触发吸顶的偏移距离 |
STStyle | cssString | false | -- | -- | 吸顶后的样式 |
evnets | event.detail | explain |
---|---|---|
ST | { isST:true, translateY: 0 } | STItem的吸顶事件;会返回相应的偏移值 |
说明:STBox需与STItem配套使用
示例代码
<STBox boxStyle='height:700rpx'> <view>这些是正常的内容</view> <view>这些是正常的内容</view> <view>这些是正常的内容</view> <view>这些是正常的内容</view> <STItem STStyle='background-color:#fff;width:100%;' > <view>我是滚着滚着就吸顶的内容</view> </STItem> <view>这些是正常的内容</view> <view>这些是正常的内容</view> </STBox> Cslider:滑块组件(可双滑块)
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | false | "default" | range/default | 滑块类型;range范围选择(出现两个手柄);default为点选(只有一个滑动手柄) |
value | Array | false | [] | -- | 动态设置滑块的值 |
scale | Array | true | -- | -- | 如果mode为custom时必传,JSON的数组 |
mode | String | false | "ratio" | ratio/custom | 滑块的模板ratio为百分比;custom自定义 |
minRange | Number | false | 1 | int | 最小间隔区域 |
valueKey | String | false | "bst_value" | -- | 当mode为custom时JSON内部值唯一字段(类似数据的id) |
checkedColor | String | false | #38A8F6 | #****** | 选中横线的颜色 |
unCheckedColor | String | false | #CCCCCC | #****** | 未选中横线的颜色 |
evnets | event.detail | explain |
---|---|---|
change | [] | scale中被选中的值 |
示例代码
<!--wxml内--> <Cslider scale='{{testList}}' mode='custom' type='range' valueKey='label' bindchange='onsliderchange' /> <!--js内--> data:{ testList: [ {label:"item1",data:{test:"112212"}}, {label:"item2",data:{test:"112212"}}, {label:"item3",data:{test:"112212"}}, {label:"item4",data:{test:"112212"}}, {label:"item5",data:{test:"112212"}}, ] }, Ctab/CtabItem:选项卡(组)
Ctab
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
current | Number | false | 0 | int | 当前选中的item的index(可动态设置) |
titleItemWidth | Number | false | 100 | int | title里面的button的宽度 |
titleCheckedStyle | cssString | false | "" | -- | 选中的title内button的样式 |
CtabItem
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
title | String | false | "title" | -- | title内button的文本 |
data | null | false | "" | -- | 需要传递的数据,会在Ctab的change事件中返回 |
icon | String | false | "" | URL | title内部button前面的icon(必须为URL) |
itemStyle | cssString | false | "" | -- | content内容部分的容器的样式 |
evnets | event.detail | explain |
---|---|---|
change | CtabItem中data参数 | 作用于Ctab,当选中值改变时触发 |
说明:Ctab与CtabItem需配套使用,CtabItem可以左右滑动来切换选择的值
示例代码
<Ctab current='{{0}}' bindchange='ontabchange' > <CtabItem title='我是标题1' icon='https://miniapp.scqcp.com/images/cityline_siji.png' itemStyle='padding:30rpx 0' > <view>我是内容1哦<view> </CtabItem> <CtabItem title='我是标题2' icon='https://miniapp.scqcp.com/images/cityline_ren.png' > 我是内容2 </CtabItem> </Ctab> Cinput:输入框(清除icon)
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | false | "text" | text、number、idcard、digit | 输入框的类型(可参照小程序开发文档input组件) |
boxStyle | cssString | false | "" | -- | 组件容器样式 |
inputStyle | cssString | false | "" | -- | 输入框input样式 |
value | String | false | "" | -- | 初始化输入框的值(可动态设置) |
disabled | Boolean | false | false | true/false | 是否禁止当前组件 |
startIconType | String | false | "search" | success, success_no_circle, info, warn, waiting, cancel, download, search, clear | 头部icon类型(参照微信小程序开发文档icon) |
startIconColor | String | false | "" | #****** | 头部icon的颜色(当传入此选项或startIconURL时才具有头部的icon图标) |
clearColor | String | false | "" | #****** | 尾部清除icon的颜色(当传入此选项时组件才具有清除按钮) |
startIconURL | String | false | "" | URL | 头部icon的url路径(如果传入此选项,startIconType与startIconColor选项无效) |
focus | Boolean | false | false | true/false | 自动获取焦点 |
confirmType | Boolean | false | false | true/false | 设置键盘右下角按钮的文字,仅在type='text'时生效 |
cursorSpacing | Number | false | 0 | int | 指定光标与键盘的距离,取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离 |
maxlength | Number | false | 140 | int | 最大输入长度,设置为 -1 的时候不限制最大长度 |
placeholder | String | false | "" | -- | 输入框为空时占位符 |
placeholderStyle | cssString | false | "" | -- | 输入框为空时占位符的样式 |
evnets | event.detail | explain |
---|---|---|
input | {value, cursor, keyCode} | 键盘输入时触发(点击清除icon的时候也会触发该事件) |
focus | { value, height } | 输入框聚焦时触发 |
blur | {value: value} | 输入框失去焦点时触发 |
confirm | {value: value} | 点击完成按钮时触发 |
示例代码
<Cinput startIconColor='#ddd' clearColor='#ddd' /> LSDrawer:左滑抽屉/(删除)盒子
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
slidingDistance | String/Number | false | "30%" | int、/\d+px$/、百分比 | 可滑动的距离,为Number类型时默认添加单位“px”,字符串类型时可以为“100px”或“40%”这样的格式 |
hiddenValue | String | false | "删除" | -- | 隐藏区域的文本内容 |
hiddenStyle | cssString | false | "" | -- | 隐藏区域的样式 |
customHidden | Boolean | false | false | true/false | 是否自定义隐藏区域内容 |
data | null | false | "" | -- | 需要传递的数据(clear事件会返回) |
isOpen | Boolean | false | false | true/false | 是否展开(可动态设置) |
evnets | event.detail | explain |
---|---|---|
clear | props传入的data | 点击隐藏区域的"删除"按钮触发(当customHidden为true时无效) |
slot | explain |
---|---|
default | 主体内容 |
hidden | 自定义隐藏区域的内容 |
示例代码
<LSDrawer isOpen='{{true}}'> test2 </LSDrawer> Cheader:自定义导航栏
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
boxStyle | cssString | false | "" | -- | 组件容器样式(可动态改变,例如动态改变不透明度) |
leftStyle | cssString | false | "" | -- | 左边返回按钮区域的样式 |
centerStyle | cssString | false | "" | -- | 内容区域的样式 |
backWidth | cssString | false | "50px" | -- | 返回按钮区域的宽度 |
backZindex | String | false | "5" | -- | 返回按钮区域的z-index |
evnets | event.detail | explain |
---|---|---|
back | -- | 点击back按钮时的回调 |
examplePipe | {height} | 实例管道事件(当组件初始化后,会调用该事件,参数height为导航条的真实高度) |
slot | explain |
---|---|
default | 主体内容 |
此header只具有导航条的样式,不具备回退(back)交互功能;如需返回上一页,请绑定back事件自行回退(受小程序插件约束,插件内部不能控制路由相关操作)
示例代码
<!--wxml内--> <Cheader boxStyle='color:#fff;background-color:#157CF0' bindexamplePipe='onexamplePipe' bindback='onback' >我是一个导航条</Cheader> <!--js内--> onexamplePipe:function(e){ console.log(e.detail,"这是导航条的高度,可根据此高度设置内容区域的padding或者margin防止导航条遮挡内容") }, onback:function(e){ console.log("这里可以控制路由返回"); wx.navigateBack({delta:1}) }, queue/queueItem:队列(组)
queue
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
type | String | false | "list" | equipartition、list、auto | 组件类型;equipartition为均分两端对齐item排列,每个item宽度一致,间隙自适应;auto为每个item宽度自适应,排列inline;list为正常默认垂直排列 |
itemStyle | cssString | false | "" | -- | 每个插入的item的样式,当type为equipartition时其中width属性(默认为30%/每行3个)决定每一行的个数并且过滤掉(marginLeft与marginRight的值),例如width:24%那么每一行就会有4个item; |
boxStyle | cssString | false | "" | -- | 组件容器样式 |
queueItem
props | type | isMast | defult | range | explain |
---|---|---|---|---|---|
itemStyle | cssString | false | "" | -- | 同queue的itemStyle但优先级高于它(用于特殊item的样式处理) |
slot | explain |
---|---|
default | item插入内容 |
queue队列需要queueItem搭配使用;type为equipartition时可拓展为宫格;type为auto可拓展为tag选择标签
示例代码
<!--wxml内--> <queue type='equipartition' itemStyle='background-color:red;margin-right:10rpx' > <queueItem>我是老大</queueItem> <queueItem>-.-!我不想和你们玩了</queueItem> <queueItem>我是老三</queueItem> <queueItem>我是老四</queueItem> <queueItem>我是老五</queueItem> </queue> JS API
<!--page.js内可这样引入--> let { InitDateObj, //初始化时间类 patternGetValue, //取值模式 drillJSON, //下钻json数据 myFor, //循环 duplicateRemoval, //数组去重 hasKey, //判断对象是否含有某些值 formatCss, //格式化css字符串 cssObjToString, //将一个css样式对象转化为字符串 mergeCssStr, //合并css字符串、对象 Displacementer, //坐标换算类 initAryforJSON //初始化json数组 } = requirePlugin('BSTCommon') InitDateObj:初始化时间类(class)
此类为静态方法类,提供的方法如下:
function | parameter(type) | return(type) | explain |
---|---|---|---|
getDivision | newModel(string) | D(object) | 获取一个底层备用的模板数据对象,newModel为一个含有【YMDhms】这6个字母与其他分隔符组成的字符串;例如:“YYYY-MM-DD hh:mm:ss”;返回数据对象D:{division, getValueSequence} |
completionStr | str(number) | newNumberSstring(string) | 将各位数的数字转换为两位数的字符串,例如:str为1时返回"01" |
initDate | date(Date/DateString)、model(string) | D(object) | 初始化一个时间对象,参数model为含有【YMDhms】字母的字符串模板,例如:"YYYY-MM-DD";输出的D为一个object,含有对应的KEY以及值;例如:{Y:2019,M:5,D:23} |
getDateString | date(Date/DateString)、model(string) | DateString(string) | 获取一个时间字符串;例如:let mydatestr=InitDateObj.getDateString(new Date(),"YYYY-MM-DD/hh:mm:ss");mydatestr的值为2019-05-23/10:23:50;除【YMDhms】预留字母意外的分隔符可以用任意字符(包括汉字);例如model可以为"YYYY年MM月DD日hh时mm分ss秒" |
getNickname | date(Date/DateString)、model(string) | datename(string) | 返回一个日期的昵称,当前有3个预留【今天、明天、后天】这三个时间以外的都为【周+Number】 |
getDate | date(DateString)、model(string) | Date(DateObject) | 根据字符串生成时间对象 |
getDateDiffStr | start(必填),end(必填),maxC,minC,config | DateString(string) | 获取时间差值字符串;start为开始时间,end为结束时间;maxC、minC属于【YMDhms】中的一个字母,用来确定当前单位的左右边界;默认maxC=“Y” minC=“s” |
countDown | option或者endTime、callback或者endTime、options、callback | null | 次函数参数不定,当只有一个参数时,需为Object;且含有字段["timer", "date"]字段"timer"必须为函数;当传入两个参数时第一个为Date(Date/DateString),第二个参数为回调函数;当传入三个参数时第一个为Date(Date/DateString),第二个为option,第三个为回调函数; |
isLeapYear | year(Number) | Boolean | 判断传入的年份是否为闰年 |
getMonthDayNum | year(Number),month(Number) | dayNum(Number) | 根据年月获取当前月有多少天(月份的范围是1-12) |
此方法为模式取值方法,可用于组件内部取值模式由外部传入;返回一个按照传入模式取值后的值;
parameter-index | parameter | type | explain |
---|---|---|---|
0 | obj | Object | 此参数为取值对象 |
1 | patternStr | String | 取值模式字符串;例如:'body.data.value'或者'[0].label' |
示例代码
<!--js内 已引入patternGetValue--> let testList=[ {label:"item1",data:{test:"112212"}}, {label:"item2",data:{test:"112212"}}, {label:"item3",data:{test:"112212"}}, {label:"item4",data:{test:"112212"}}, {label:"item5",data:{test:"112212"}}, ]; console.log(patternGetValue(testList,'[0].label')) //item1
小伙伴们JSapi文档暂时更新到这里,后续会继续更新
版权声明:
1、该文章(资料)来源于互联网公开信息,我方只是对该内容做点评,所分享的下载地址为原作者公开地址。2、网站不提供资料下载,如需下载请到原作者页面进行下载。