支付宝小程序组件

简介: 本节以 IDE 内的 Todo App 模板小程序为例,介绍支付宝小程序的文件结构,以及每种文件类型在小程序中的作用。

本章内容出自《小程序开发不求人》电子书,点击下载完整版

支付宝小程序组件

初次见面

只因为在蚂蚁群中多看了你一眼,就难以忘掉你容颜……小红小蓝的相遇就是这么的狗血,就是蚁海中的擦肩而过回眸那一眼,小蓝大脑弹出提示:这个蚂蚁美眉真是蚁群中最亮眼的那一只呀。小红心里想:这只蚂蚁哥哥真是独特呀。至于这劫能不能逃得过,请见下回分解。下面我们讲一下关于 tips 提示的相关信息。
Tips 引导是特定应用场景下系统针对用户的一种功能引导方式,例如用户第一次登录后、或者某个新功能上线后的提示等。分为两种类型:tipsdialog(对话型)、tipsplain(简单型)。

扫码体验

image.png

示例代码

{
"defaultTitle": "Tips",
"usingComponents": {
 "tips-dialog": "mini-ali-ui/es/tips/tips-dialog/index",
 "tips-plain": "mini-ali-ui/es/tips/tips-plain/index"
}
}

tips-dialog

<view>
<tips-dialog
 show="{{showDialog}}"
 className="dialog"
 type="dialog"
>
 <view class="content" slot="content">
 <view>hello,</view>
 <view>欢迎使用小程序扩展组件库 mini-ali-ui</view>
 </view>
 <view slot="operation" class="opt-button" onTap="onDialogTap">知道了</view>
</tips-dialog>
<tips-dialog

iconUrl="https://gw.alipayobjects.com/zos/rmsportal/AzRAgQXlnNbEwQRvEwiu.p
ng"
 type="rectangle"
 className="rectangle"
 onCloseTap="onCloseTap"
 show="{{showRectangle}}">
 <view class="content" slot="content">
 把“城市服务”添加到首页
 </view>
 <view slot="operation" class="add-home" onTap="onRectangleTap">立即添加
</view>
</tips-dialog>
</view>
Page({
data: {
 showRectangle: true,
 showDialog: true,
},
onCloseTap() {
 this.setData({
 showRectangle: false,
 });
},
onRectangleTap() {
 my.alert({
 content: 'do something',
 });
},
onDialogTap() {
 this.setData({
 showDialog: false,
 });
},
});
.rectangle {
position: fixed;
bottom: 100px;
}
.dialog {
position: fixed;
bottom: 10px;
}
.content {
font-size: 14px;
color: #fff;
}
.opt-button {
width: 51px;
height: 27px;
display: flex;
justify-content: center;
align-items: center;
color: #fff;
font-size: 12px;
border: #68BAF7 solid 1rpx;
}
.add-home {
width: 72px;
height: 27px;
display: flex;
justify-content: center;
align-items: center;
background-color: #56ADEB;
color: #fff;
font-size: 14px;
}

tips-plain

<tips-plain onClose="onClose" time="{{time}}">{{content}}</tips-plain>
Page({
data: {
 content: '我知道了',
 time: 2000,
},
onClose() {
 my.alert({
 title: '12321'
 });
}
});

属性

tips-dialog

image.png
image.png

slots

image.png

tips-plain

image.png

对方向你发出了好友邀请

作为男士,小蓝主动发起了对话:小红美眉,我可以加你为支付宝好友吗?小红:用来作什么呢?小蓝:我可以天天送你能量跟鸡饲料,种树献爱心。小红心想自己想种一棵樟子松还差点能量,加就加。至此,小红小蓝成功成为了支付宝好友。
当应用中需要比较明显的对用户当前的操作行为进行警示或提醒时,可以使用对话框。用户需要针对对话框进行操作后方可结束。

扫码体验

image.png

示例代码

{
"defaultTitle": "Modal",
"usingComponents": {
 "modal": "mini-ali-ui/dist/es/modal/index"
}
}
<view>
<button onTap="openModal">打开 modal</button>
<modal
 show="{{modalOpened}}"
 onModalClick="onModalClick"
 onModalClose="onModalClose"

topImage="https://gw.alipayobjects.com/zos/rmsportal/yFeFExbGpDxvDYnKHcrs.
png"
>
 <view slot="header">标题单行</view>
 说明当前状态、提示用户解决方案,最好不要超过两行。
 <view slot="footer">确定</view>
  </modal>
</view>
Page({
data: {
 modalOpened: false,
},
openModal() {
 this.setData({
 modalOpened: true,
 });
},
onModalClick() {
 this.setData({
 modalOpened: false,
 });
},
onModalClose() {
 this.setData({
 modalOpened: false,
 });
}
});

属性

image.png
image.png

buttons

提供按钮组配置,每一项表示一个按钮。

image.png
image.png

slots

image.png

开启了愉快的聊天模式

看到小红通过了它的好友申请,小蓝赶紧发起聊天:小红美眉,你平时喜欢做什么呀,有空我们可以一起约呀。此处就可以使用 input 输入框啦,不仅可以输入文字还可以输入数字、密码哦。
输入框,可设置输入内容的类型、长度、显示形式等。当用户需要输入文字内容时点击文本框,它将自动打开键盘。使用文本字段来请求少量信息。
注意:

  • iOS 系统支付宝客户端版本 10.1.80 及以上不支持 focus=true 自动唤起。
  • 小程序中 input 如果父类是 position: fixed,可以加上 enableNative="{{false}}",解决输入框错位问题。

扫码体验

image.png

示例代码

<!-- API-DEMO page/component/input/input.axml -->
<view class="page">
 <view class="page-description">输入框</view>
 <view class="page-section">
 <view class="form-row">
 <view class="form-row-label">受控聚焦</view>
 <view class="form-row-content">
 <input class="input" focus="{{focus}}" onFocus="onFocus" onBlur="onBlur"
placeholder="input something" />
 </view>
 </view>
 <view class="page-section-btns">
 <button size="mini" onTap="bindButtonTap">聚焦</button>
 </view>
 </view>
 <view class="page-section">
 <view class="form-row">
 <view class="form-row-label"><label for="controlled">显示输入
</label></view>
 <view class="form-row-content">
 <input class="input" id="controlled" onInput="bindKeyInput"
placeholder="show input content" />
 </view>
 </view>
 <view class="extra-info">你输入的是:{{inputValue}}</view>
 </view>
 <view class="page-section">
 <view class="form-row">
 <view class="form-row-label">最大长度</view>
 <view class="form-row-content">
 <input class="input" maxlength="10" placeholder="maxlength 10" />
 </view>
 </view>
 <view class="form-line" />
 <view class="form-row">
 <view class="form-row-label">收起键盘</view>
 <view class="form-row-content">
 <input class="input" onInput="bindHideKeyboard" placeholder="输入 123
自动收起键盘" />
 </view>
 </view>
 <view class="form-line" />
 <view class="form-row">
 <view class="form-row-label">输入密码</view>
 <view class="form-row-content">
 <input class="input" password type="text" placeholder="密码输入框" />
 </view>
 </view>
 <view class="form-line" />
 <view class="form-row">
 <view class="form-row-label">输入数字</view>
 <view class="form-row-content">
 <input class="input" type="number" placeholder="数字输入框" />
 </view>
 </view>
 <view class="form-line" />
 <view class="form-row">
 <view class="form-row-label">小数点键盘</view>
 <view class="form-row-content">
 <input class="input" type="digit" placeholder="带小数点的数字键盘" />
 </view>
 </view>
 <view class="form-line" />
 <view class="form-row">
 <view class="form-row-label">身份证键盘</view>
 <view class="form-row-content">
 <input class="input" type="idcard" placeholder="身份证输入键盘" />
 </view>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">搜索框</view>
 <view class="page-section-demo">
 <view class="search-outer">
 <input
 class="search-input"
 placeholder="搜索"
 value="{{search}}"
 onConfirm="doneSearch"
 onInput="handleSearch"
 />
 <text class="search-cancel" onTap="clearSearch">取消</text>
 </view>
 </view>
 </view>
</view>
// API-DEMO page/component/input/input.js
Page({
 data: {
 focus: false,
 inputValue: '',
 },
 bindButtonTap() {
 // blur 事件和这个冲突
 setTimeout(() => {
 this.onFocus();
 }, 100);
 },
 onFocus() {
 this.setData({
 focus: true,
 });
 },
 onBlur() {
 this.setData({
 focus: false,
 });
 },
 bindKeyInput(e) {
 this.setData({
 inputValue: e.detail.value,
 });
 },
 bindHideKeyboard(e) {
 if (e.detail.value === '123') {
 // 收起键盘
 my.hideKeyboard();
 }
 },
 handleSearch(e) {
 console.log('search', e.detail.value);
 this.setData({
 search: e.detail.value,
 });
 },
 doneSearch() {
 console.log('doneSearch', this.data.search);
 my.hideKeyboard();
 },
 clearSearch() {
 console.log('clear search', this.data.search);
 this.setData({
 search: '',
 });
 },
});
/* API-DEMO page/component/input/input.acss */
.extra-info {
 border-top: 1px solid #ddd;
 margin-left: 30rpx;
 padding: 20rpx 0;
 overflow: auto;
}
.search-outer {
 box-sizing: border-box;
 display:flex;
 height:40px;
 overflow:hidden;
 padding: 8px;
 border-bottom: 1px solid #ddd;
 background-color: #efeff4;
}
.search-outer * {
 box-sizing: border-box;
}
.search-input {
 flex:1;
 text-align: left;
 display: block;
 color: #000;
 height: 24px;
 font-size: 15px;
 background-color: #fff;
 border-color: transparent;
}
.search-input:focus + .search-cancel {
 margin-right:0;
 opacity: 1;
}
.search-cancel {
 margin-right:-40px;
 display: inline-block;
 opacity: 0;
 padding-left: 8px;
 height: 24px;
 line-height: 24px;
 font-size: 16px;
 color: #108ee9;
 text-align: right;
 transition: margin-right .3s,opacity .3s;
 transition-delay: .1s;
}

属性

属性 类型 默认值 描述 最低版本
value String - 初始内容 -
name String - 组件名字,用于表单提交获取数据 -
type String text input 的类型,有效值:text、 number、 idcard、digit(可以唤起带有小数点的数字键盘)、numberpad、digitpad、 idcardpad。 numberpad、digitpad、idcardpad 基础库 1.13.0客户端10.1.50,可通过my.canIUse(input.type.numberpad)来检测。
password Boolean false 是否是密码类型 -
placeholder String - 占位符 -
placeholder-style String - 指定 placeholder 的样式,可设置间距 1.6.0
placeholder-class String - 指定 placeholder 的样式类 1.6.0
disabled Boolean false 是否禁用 -
maxlength Number 140 最大长度 -
focus Boolean false 获取焦点 -
confirm-type String done 设置键盘右下角按钮的文字,有效值:done(显示“完成”)、go(显示“前往”)、next(显示“下一个”)、search(显示“搜索”)、send(显示“发送”),平台不同显示的文字略有差异。注意:只有在type=text 时有效 1.7.0
confirm-hold Boolean false 点击键盘右下角按钮时是否保持键盘不收起状态 1.7.0
cursor Number - 指定 focus 时的光标位置 -
selectionstart Number -1 获取光标时,选中文本对应的焦点光标起始位置,需要和selection-end 配合使用 1.7.0
selectionend Number -1 获取光标时,选中文本对应的焦点光标结束位置,需要和selection-start 配合使用 1.7.0
randomNumber Boolean false 当 type 为 number, digit,idcard 数字键盘是否随机排列 1.9.0
controlled Boolean false 是否为受控组件。为 true时,value 内容会完全受setData 控制 1.8.0
onInput EventHandle - 键盘输入时触发 input 事件,event.detail = {value: value} -
onConfirm EventHandle - 点击键盘完成时触发,event.detail = {value: value} -
onFocus EventHandle - 聚焦时触发,event.detail ={value: value} -
onBlur EventHandle - 失去焦点时触发(仅支持真机),event.detail = {value:value} -

手拉手你是我的好朋友

时间在点击一个个发送按钮中不知不觉流逝,小蓝与小红的友谊不断加深,小小的按钮连接着他们彼此,我们来了解一下 button 按钮的使用方法。
需要重点强调该操作并且引导用户去点击的入口通过按钮表达。

扫码体验

image.png

示例代码

<!-- API-DEMO page/component/button/button.axml -->
<view class="page">
 <view class="page-description">按钮</view>
 <view class="page-section">
 <view class="page-section-title">type-primary/ghost</view>
 <view class="page-section-demo">
 <button type="primary">主要操作 Normal</button>
 <button type="primary" loading>操作</button>
 <button type="primary" disabled>主要操作 Disable</button>
 <button type="ghost">ghost 操作</button>
 <button type="ghost" loading>ghost 操作</button>
 <button type="ghost" disabled>ghost 操作 Disable</button>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">type-default</view>
 <view class="page-section-demo">
 <button data-aspm-click="xxx">辅助操作 Normal</button>
 <button disabled>辅助操作 Disable</button>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">type-warn</view>
 <view class="page-section-demo">
 <button type="warn">警告类操作 Normal</button>
 <button type="warn" disabled>警告类操作 Disable</button>
 <button type="warn" hover-class="red">hover-red</button>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">Size</view>
 <view class="page-section-demo">
 <button size="mini" loading>提交</button>
 <button style="margin-left: 10px;" type="primary" size="mini">选项</button>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">open</view>
 <view class="page-section-demo">
 <button open-type="share">share</button>
 </view>
 </view>
 <view class="page-section">
 <view class="page-section-title">Form</view>
 <view class="page-section-demo">
 <form onSubmit="onSubmit" onReset="onReset">
 <button form-type="submit" type="primary">submit</button>
 <button form-type="reset">reset</button>
 </form>
 </view>
 </view>
</view>
// API-DEMO page/component/button/button.js
Page({
 data: {},
 onSubmit() {
 my.alert({ title: 'You click submit' });
 },
 onReset() {
 my.alert({ title: 'You click reset' });
 },
});
/* API-DEMO page/component/button/button.acss */
.red {
 background-color: red;
 border-color: red;
 color: #fff;
}
button + button {
 margin-top: 32rpx;
}

属性

属性 类型 默认值 描述 最低版本
size String default 有效值 default, mini(小尺寸)。 -
type String default 按钮的样式类型,有效值primary,default,,warn。 -
plain Boolean false 是否镂空 -
disabled Boolean false 是否禁用 -
loading Boolean false 按钮文字前是否带 loading 图标。 -
hover-class String buttonhover 按钮按下去的样式类。buttonhover 默认为{backgroundcolor:rgba(0, 0, 0, 0.1);opacity: 0.7;},hoverclass="none" 时表示没有被点击效果。 -
hover-starttime Number 20 按住后多少时间后出现点击状态,单位毫秒。 -
hover-staytime Number 70 手指松开后点击状态保留时间,单位毫秒。 -
hover-stoppropagation Boolean false 是否阻止当前元素的祖先元素出现被点击样式。 1.10.0
form-type String - 有效值:submit, reset,用于form 表单 组件,点击分别会触发 submit/reset 事件。 -
open-type String - 开放能力 1.1.0
scope String - 当 open-type 为 getAuthorize时有效。 1.11.0
onTap EventHandle - 点击 -
appparameter String - 打开 APP 时,向 APP 传递的参数,open-type="launchApp" 时有效。 -
public-id String - 生活号 id,必须是当前小程序同主体且已关联的生活号,opentype="lifestyle" 时有效。 -

open-type 有效值

说明 最低版本
share 触发 自定义分享,可使用my.canIUse('button.opentype.share') 判断 1.1.0
getAuthorize 支持小程序授权,可使用my.canIUse('button.opentype.getAuthorize') 判断 1.11.0
contactShare 分享到通讯录好友,可使用 my.canIUse('button.opentype.contactShare') 判断 1.11.0
lifestyle 关注生活号,可使用 my.canIUse('button.opentype.lifestyle') 判断 1.11.0

scope 有效值

当 open-type 为 getAuthorize 时,可以设置 scope 为以下值:

说明 最低版本
phoneNumber 唤起授权界面,用户可以授权小程序获取用户手机号。 1.11.0
userinfo 唤起授权界面,用户可以授权小程序获取支付宝会员的基础信息。 1.11.0
相关文章
|
26天前
|
小程序 数据可视化 JavaScript
微信小程序:轻松实现时间轴组件
本文介绍了如何在微信小程序中实现一个可视化时间轴组件。该组件适用于展示用户资金流动、投资结算等时间节点,帮助用户直观了解资金去向。时间轴支持自定义节点形状、显示序号、倒序排列等功能,并通过插槽灵活定义动态内容。文中详细介绍了组件的设计与使用方法,以及如何结合动态 slot 实现自定义操作。该组件为展示用户资金信息提供了美观、易用的解决方案。
54 1
微信小程序:轻松实现时间轴组件
|
25天前
|
小程序
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
微信小程序动态tabBar实现:基于自定义组件,灵活支持不同用户角色与超过5个tab自由组合(更新版)
332 1
|
26天前
|
小程序 搜索推荐 API
微信小程序:自定义关注公众号组件样式
尽管关注公众号组件的样式固定且不可修改,但产品经理的需求却需要个性化的定制。在这种情况下,我们需要寻找解决方案,以满足这些特殊需求,尽管这可能有点棘手。
54 0
微信小程序:自定义关注公众号组件样式
|
29天前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
48 1
|
29天前
|
缓存 小程序 索引
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
uni-app开发微信小程序时vant组件van-tabs的使用陷阱及解决方案
161 1
|
4月前
|
小程序 数据库
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
127 0
|
1月前
|
小程序 JavaScript
微信小程序之input组件及其获取用户输入信息
微信小程序之input组件及其获取用户输入信息
47 1
|
2月前
|
小程序 容器
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
本文介绍了微信小程序中常用组件的使用方法,包括view、scroll-view、swiper与swiper-item、text与rich-text、button以及image组件。详细解释了各组件的功能、属性以及如何在小程序页面中进行使用。
微信小程序常用组件的简单使用 view,scroll-view,swiper,swiper-item,text,rich-text,button,image
|
1月前
|
小程序 前端开发 JavaScript
小程序入门之认识view和text组件
小程序入门之认识view和text组件
44 0
|
3月前
|
JSON 小程序 前端开发
终于搞懂了!微信小程序的渲染机制及组件使用
【8月更文挑战第8天】微信小程序的渲染机制及组件使用
137 3
终于搞懂了!微信小程序的渲染机制及组件使用
下一篇
无影云桌面