微信小程序官方组件展示之表单组件button源码

2022-08-23 15:23:47 浏览数 (2)

以下将展示微信小程序之表单组件button源码官方组件能力,组件样式仅供参考,开发者可根据自身需求定义组件样式,具体属性参数详见小程序开发文档。

功能描述:

按钮。

属性说明:

WebView:

属性

类型

默认值

必填

说明

最低版本

size

string

default

按钮的大小

1.0.0

合法值

说明

default

默认大小

mini

小尺寸

type

string

default

按钮的样式类型

1.0.0

合法值

说明

primary

绿色

default

白色

warn

红色

plain

boolean

FALSE

按钮是否镂空,背景色透明

1.0.0

disabled

boolean

FALSE

是否禁用

1.0.0

loading

boolean

FALSE

名称前是否带 loading 图标

1.0.0

form-type

string

用于 form 组件,点击分别会触发 form 组件的 submit/reset 事件

1.0.0

合法值

说明

submit

提交表单

reset

重置表单

open-type

string

微信开放能力

1.1.0

合法值

说明

最低版本

contact

打开客服会话,如果用户在会话中点击消息卡片后返回小程序,可以从 bindcontact 回调中获得具体信息,具体说明 (*小程序插件中不能使用*)

1.1.0

share

触发用户转发,使用前建议先阅读使用指引

1.2.0

getPhoneNumber

获取用户手机号,可以从 bindgetphonenumber 回调中获取到用户信息,具体说明 (*小程序插件中不能使用*)

1.2.0

getUserInfo

获取用户信息,可以从 bindgetuserinfo 回调中获取到用户信息 (*小程序插件中不能使用*)

1.3.0

launchApp

打开APP,可以通过 app-parameter 属性设定向 APP 传的参数具体说明

1.9.5

openSetting

打开授权设置页

2.0.7

feedback

打开“意见反馈”页面,用户可提交反馈内容并上传日志,开发者可以登录小程序管理后台后进入左侧菜单“客服反馈”页面获取到反馈内容

2.1.0

chooseAvatar

获取用户头像,可以从 bindchooseavatar 回调中获取到头像信息

2.21.2

hover-class

string

button-hover

指定按钮按下去的样式类。当 `hover-class="none"` 时,没有点击态效果

1.0.0

hover-stop-propagation

boolean

FALSE

指定是否阻止本节点的祖先节点出现点击态

1.5.0

hover-start-time

number

20

按住后多久出现点击态,单位毫秒

1.0.0

hover-stay-time

number

70

手指松开后点击态保留时间,单位毫秒

1.0.0

lang

string

en

指定返回用户信息的语言,zh_CN 简体中文,zh_TW 繁体中文,en 英文。

1.3.0

合法值

说明

en

英文

zh_CN

简体中文

zh_TW

繁体中文

session-from

string

会话来源,open-type="contact"时有效

1.4.0

send-message-title

string

当前标题

会话内消息卡片标题,open-type="contact"时有效

1.5.0

send-message-path

string

当前分享路径

会话内消息卡片点击跳转小程序路径,open-type="contact"时有效

1.5.0

send-message-img

string

截图

会话内消息卡片图片,open-type="contact"时有效

1.5.0

app-parameter

string

打开 APP 时,向 APP 传递的参数,open-type=launchApp时有效

1.9.5

show-message-card

boolean

FALSE

是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效

1.5.0

bindgetuserinfo

eventhandle

用户点击该按钮时,会返回获取到的用户信息,回调的 detail 数据与wx.getUserInfo返回的一致,open-type="getUserInfo"时有效

1.3.0

bindcontact

eventhandle

客服消息回调,open-type="contact"时有效

1.5.0

bindgetphonenumber

eventhandle

获取用户手机号回调,open-type=getPhoneNumber时有效

1.2.0

binderror

eventhandle

当使用开放能力时,发生错误的回调,open-type=launchApp时有效

1.9.5

bindopensetting

eventhandle

在打开授权设置页后回调,open-type=openSetting时有效

2.0.7

bindlaunchapp

eventhandle

打开 APP 成功的回调,open-type=launchApp时有效

2.4.4

bindchooseavatar

eventhandle

获取用户头像回调,open-type=chooseAvatar时有效

2.21.2

Skyline:

属性

说明

loading

loading动画样式暂未支持

Bug & Tip

1.tip: button-hover 默认为{background-color: rgba(0, 0, 0, 0.1); opacity: 0.7;}

2.tip: bindgetphonenumber 从1.2.0 开始支持,但是在1.5.3以下版本中无法使用wx.canIUse进行检测,建议使用基础库版本进行判断。

3.tip: 在bindgetphonenumber 等返回加密信息的回调中调用 wx.login 登录,可能会刷新登录态。此时服务器使用 code 换取的 sessionKey 不是加密时使用的 sessionKey,导致解密失败。建议开发者提前进行 login;或者在回调中先使用 checkSession 进行登录态检查,避免 login 刷新登录态。

4.tip: 从 2.21.2 起,对getPhoneNumber接口进行了安全升级,bindgetphonenumber 返回的信息中增加code参数,code是一个动态的令牌,开发者拿到code后需调用微信后台接口换取手机号。详情新版接口使用指南

5.tip: 从 2.1.0 起,button 可作为原生组件的子节点嵌入,以便在原生组件上使用 open-type 的能力。

6.tip: 目前设置了 form-type 的 button 只会对当前组件中的 form 有效。因而,将 button 封装在自定义组件中,而 form 在自定义组件外,将会使这个 button 的 form-type 失效。

示例代码:

JAVASCRIPT:

代码语言:javascript复制
const types = ['default', 'primary', 'warn']
const pageObject = {
 data: {
 defaultSize: 'default',
 primarySize: 'default',
 warnSize: 'default',
 disabled: false,
 plain: false,
 loading: false
 },
 onShareAppMessage() {
 return {
 title: 'button',
 path: 'page/component/pages/button/button'
 }
 },
 setDisabled() {
 this.setData({
 disabled: !this.data.disabled
 })
 },
 setPlain() {
 this.setData({
 plain: !this.data.plain
 })
 },
 setLoading() {
 this.setData({
 loading: !this.data.loading
 })
 },
 handleContact(e) {
 console.log(e.detail)
 },
 handleGetPhoneNumber(e) {
 console.log(e.detail)
 },
 handleGetUserInfo(e) {
 console.log(e.detail)
 },
 handleOpenSetting(e) {
 console.log(e.detail.authSetting)
 },
 handleGetUserInfo(e) {
 console.log(e.detail.userInfo)
 }
}
for (let i = 0; i < types.length;   i) {
 (function (type) {
 pageObject[type] = function () {
 const key = type   'Size'
 const changedData = {}
 changedData[key] =
 this.data[key] === 'default' ? 'mini' : 'default'
 this.setData(changedData)
  }
 }(types[i]))
}
Page(pageObject)

WXML:

代码语言:javascript复制
<view class="page-body">
 <view class="btn-area" id="buttonContainer">
 <button type="primary">页面主操作 Normal</button>
 <button type="primary" loading="true">页面主操作 Loading</button>
 <button type="primary" disabled="true">页面主操作 Disabled</button>
 <button type="default">页面次要操作 Normal</button>
 <button type="default" disabled="true">页面次要操作 Disabled</button>
 <button type="warn">警告类操作 Normal</button>
 <button type="warn" disabled="true">警告类操作 Disabled</button>
 <view class="button-sp-area">
 <button type="primary" plain="true">按钮</button>
 <button type="primary" disabled="true" plain="true">不可点击的按钮</button>
 <button type="default" plain="true">按钮</button>
 <button type="default" disabled="true" plain="true">按钮</button>
 <button class="mini-btn" type="primary" size="mini">按钮</button>
 <button class="mini-btn" type="default" size="mini">按钮</button>
 <button class="mini-btn" type="warn" size="mini">按钮</button>
 </view>
 </view>
</view>

WXSS :

代码语言:javascript复制
button{
 margin-top: 30rpx;
 margin-bottom: 30rpx;
}
.button-sp-area{
 margin: 0 auto;
 width: 60%;
}
.mini-btn{
 margin-right: 10rpx;
}

版权声明: 本站所有内容均由互联网收集整理、上传,如涉及版权问题,请联系我们第一时间处理。

原文链接地址:https://developers.weixin.qq.com/miniprogram/dev/component/button.html

0 人点赞