微信小程序常用组件

布满荆棘的人生 2022-12-08 12:51 263阅读 0赞

文章目录

  • 一、常用的组件地图之-map
  • 1.marker
    • 1.1 marker
    • 1.2 marker 上的气泡 callout
  • 2.control
  • 二、小程序的定位相关api
  • 三、获取设备的基本信息的api
    • 1、设置全局的变量 app.js
    • 2.获取设备信息 app.js
    • 3.地图页面获取全局的设备信息
  • 四、处理小程序中的html标签
    • 1.rich-text
    • 2.wxparse https://github.com/icindy/wxParse
  • 五、小程序中的模板语法
  • 六、小程序常用api之拍照
    • 1.预览图片
    • 2.拍照
  • 七、wx.showActionSheet

一、常用的组件地图之-map

https://developers.weixin.qq.com/miniprogram/dev/component/map.html






















































































































































































































































































属性 类型 默认值 必填 说明 最低版本
longitude number 中心经度 1.0.0
latitude number 中心纬度 1.0.0
scale number 16 缩放级别,取值范围为3-20 1.0.0
markers Array.<marker> 标记点 1.0.0
covers Array.<cover> 即将移除,请使用 markers 1.0.0
polyline Array.<polyline> 路线 1.0.0
circles Array.<circle> 1.0.0
controls Array.<control> 控件(即将废弃,建议使用 cover-view 代替) 1.0.0
include-points Array.<point> 缩放视野以包含所有给定的坐标点 1.0.0
show-location boolean false 显示带有方向的当前定位点 1.0.0
polygons Array.<polygon> 多边形 2.3.0
subkey string 个性化地图使用的key 2.3.0
layer-style number 1 个性化地图配置的 style,不支持动态修改
rotate number 0 旋转角度,范围 0 ~ 360, 地图正北和设备 y 轴角度的夹角 2.5.0
skew number 0 倾斜角度,范围 0 ~ 40 , 关于 z 轴的倾角 2.5.0
enable-3D boolean false 展示3D楼块(工具暂不支持) 2.3.0
show-compass boolean false 显示指南针 2.3.0
show-scale boolean false 显示比例尺,工具暂不支持 2.8.0
enable-overlooking boolean false 开启俯视 2.3.0
enable-zoom boolean true 是否支持缩放 2.3.0
enable-scroll boolean true 是否支持拖动 2.3.0
enable-rotate boolean false 是否支持旋转 2.3.0
enable-satellite boolean false 是否开启卫星图 2.7.0
enable-traffic boolean false 是否开启实时路况 2.7.0
setting object 配置项 2.8.2
bindtap eventhandle 点击地图时触发,2.9.0起返回经纬度信息 1.0.0
bindmarkertap eventhandle 点击标记点时触发,e.detail = {markerId} 1.0.0
bindlabeltap eventhandle 点击label时触发,e.detail = {markerId} 2.9.0
bindcontroltap eventhandle 点击控件时触发,e.detail = {controlId} 1.0.0
bindcallouttap eventhandle 点击标记点对应的气泡时触发e.detail = {markerId} 1.2.0
bindupdated eventhandle 在地图渲染更新完成时触发 1.6.0
bindregionchange eventhandle 视野发生变化时触发, 2.3.0
bindpoitap eventhandle 点击地图poi点时触发,e.detail = {name, longitude, latitude} 2.3.0

1.marker

1.1 marker

标记点用于在地图上显示标记的位置






























































































































属性 说明 类型 必填 备注 最低版本
id 标记点 id number marker 点击事件回调会返回此 id。建议为每个 marker 设置上 number 类型 id,保证更新 marker 时有更好的性能。
latitude 纬度 number 浮点数,范围 -90 ~ 90
longitude 经度 number 浮点数,范围 -180 ~ 180
title 标注点名 string 点击时显示,callout存在时将被忽略
zIndex 显示层级 number 2.3.0
iconPath 显示的图标 string 项目目录下的图片路径,支持网络路径、本地路径、代码包路径(2.3.0
rotate 旋转角度 number 顺时针旋转的角度,范围 0 ~ 360,默认为 0
alpha 标注的透明度 number 默认 1,无透明,范围 0 ~ 1
width 标注图标宽度 number/string 默认为图片实际宽度
height 标注图标高度 number/string 默认为图片实际高度
callout 自定义标记点上方的气泡窗口 Object 支持的属性见下表,可识别换行符。 1.2.0
label 为标记点旁边增加标签 Object 支持的属性见下表,可识别换行符。 1.2.0
anchor 经纬度在标注图标的锚点,默认底边中点 Object {x, y},x 表示横向(0-1),y 表示竖向(0-1)。{x: .5, y: 1} 表示底边中点 1.2.0
aria-label 无障碍访问,(属性)元素的额外描述 string 2.5.0

1.2 marker 上的气泡 callout








































































属性 说明 类型 最低版本
content 文本 string 1.2.0
color 文本颜色 string 1.2.0
fontSize 文字大小 number 1.2.0
borderRadius 边框圆角 number 1.2.0
borderWidth 边框宽度 number 2.3.0
borderColor 边框颜色 string 2.3.0
bgColor 背景色 string 1.2.0
padding 文本边缘留白 number 1.2.0
display ‘BYCLICK’:点击显示; ‘ALWAYS’:常显 string 1.2.0
textAlign 文本对齐方式。有效值: left, right, center string 1.6.0

2.control

在地图上显示控件,控件不随着地图移动









































属性 说明 类型 必填 备注
id 控件id number 在控件点击事件回调会返回此id
position 控件在地图的位置 object 控件相对地图位置
iconPath 显示的图标 string 项目目录下的图片路径,支持本地路径、代码包路径
clickable 是否可点击 boolean 默认不可点击

二、小程序的定位相关api

https://developers.weixin.qq.com/miniprogram/dev/api/location/wx.stopLocationUpdate.html

三、获取设备的基本信息的api

https://developers.weixin.qq.com/miniprogram/dev/api/base/system/system-info/wx.getSystemInfoSync.html

  • 同步

    try {

    1. // 如果条件可以执行下去
    2. const res = wx.getSystemInfoSync()
    3. console.log(res)

    } catch () {

    1. // 异常

    }

  • 异步

    wx.getSystemInfo({

    1. success: (res) => { }

    })

因为设备的信息可能在多个地方使用,所以建议使用全局变量

1、设置全局的变量 app.js

  1. globalData: {
  2. userInfo: null,
  3. deviceinfo: null
  4. },

2.获取设备信息 app.js

  1. App({
  2. onLaunch () {
  3. // 获取设备的信息
  4. this.getDeviceInfoFn()
  5. },
  6. getDeviceInfoFn () {
  7. wx.getSystemInfo({
  8. success: (res) => {
  9. console.log(res)
  10. // 修改全局数据
  11. this.globalData.deviceinfo = res
  12. }
  13. })
  14. }
  15. })

3.地图页面获取全局的设备信息

  1. // pages/map/map.js
  2. const app = getApp();
  3. console.log(app.globalData)
  4. // const { screenWidth, screenHeight } = app.globalData.deviceinfo
  5. const { globalData: { deviceinfo: { screenWidth, screenHeight }}} = app

四、处理小程序中的html标签

1.rich-text

http://ueditor.baidu.com/website/

https://www.cnblogs.com/sky903700252/p/7846240.html

  1. var data = `<p><span style="font-size: 24px;"><strong><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">在奥运资格赛第三阶段结束后</span></strong></span><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">,国际篮联公布了世界最新排名。有趣的是,以三连胜战绩晋级东京奥运会的女篮排名竟然从第8名下滑到
  2. 了第9名!不过这并不影响仍然力压,<span style="font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255); color: rgb(255, 0, 0);"><em>居于亚洲排名的首位</em></span>。</span></p><p></p><p><strong><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">比利时队成为了最大的赢家</span></span></strong><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">,她们从
  3. 第9位连升两位,跃居至第7位,除了塞尔维亚和比利时外,世界排名前6名的位次和原先保持不变。现世界排名前10的球队分别是:1.美国、2.澳大利亚、3.西班牙、4.加拿大、5.法国、6.土耳其、7.比利时、8.塞尔维亚。</span></span></p><p><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><br/></span></span></p><ul class=" list-paddingleft-2" style="list-style-type: disc;"><li><p><span style="color:
  4. rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">111</span></span></p></li><li><p><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">2222</span></span></p></li><li><p><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);"><span style="color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; background-color: rgb(255, 255, 255);">33333<br/></span></span></p></li></ul>`;
  5. // 修改状态
  6. this.setData({
  7. proid, // 不需要从 响应数据中拿取,但是可以从那拿(可以拿,但不需要)
  8. proname,
  9. proimg,
  10. detail: data,
  11. price
  12. })
  13. // pages/detail/detail.wxml
  14. <rich-text nodes="{
  15. {detail}}" ></rich-text>

2.wxparse https://github.com/icindy/wxParse

第一步下载wxParse,参考网盘链接
链接:https://pan.baidu.com/s/1bMvyar60I1BAqzr5qxHZXw
提取码:gv9w

第二步 复制文件夹wxParse至项目跟目录下

第三步 详情页面引入必要的文件

  1. // pages/detail/detail.js
  2. var WxParse = require('../../wxParse/wxParse.js');
  3. // pages/detail/detail.wxss
  4. @import "/wxParse/wxParse.wxss";

第四步 数据绑定

当数据请求成功之后,会得到一段HTML代码,形如

  1. var detail = `<p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 16px; margin-bottom: 16px; padding: 0px; color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"><span style="font-size: 24px;"><strong>指出</strong></span>,总理先生是人民的老朋友,在当前人民奋力抗击新冠肺炎疫情的关键时刻,先生提出同我通电话,
  2. 体现了方对方的情谊和支持。疫情难免暂时影响正常人员往来,但动摇不了人民的深厚友谊。双方要在携手应对疫情挑战的同时,持续深化两国
  3. 关系特别是共建“<span style="color: rgb(255, 0, 0); text-decoration: underline;">一带一路</span>”合作,创造更多合作成果,造福两国和两国人民。<
  4. /p><p style="-webkit-tap-highlight-color: transparent; box-sizing: border-box; margin-top: 16px; margin-bottom: 16px; padding: 0px; color: rgb(34, 34, 34); font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", "Helvetica Neue", Arial, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);"><span style="font-size: 24px;"><strong>强调</strong></span>,疫情发生以来,政府高度重视,举全国之力,团结一心,采取最全面、最严格、最彻底的防控举措,取得积极成效,病亡率保持在较低水平,治疗方法不断突破,治愈率持续提升。中国政府将带领中国人民坚定信心、同舟共济、科学防治、精准施策,坚决打赢疫情防控阻击战。我们也
  5. 一定能把疫情影响降到最低,保持中国经济发展势头,努力实现今年<span style="color: rgb(255, 0, 0);"><em>发展目标任务</em></span>,同时继续朝我们的长远目标坚定迈进。</p><p><br/></p>`

给wxparse赋值

  1. /**
  2. * WxParse.wxParse(bindName , type, data, target,imagePadding)
  3. * 1.bindName绑定的数据名(必填)
  4. * 2.type可以为html或者md(必填)
  5. * 3.data为传入的具体数据(必填)
  6. * 4.target为Page对象,一般为this(必填)
  7. * 5.imagePadding为当图片自适应是左右的单一padding(默认为0,可选)
  8. */
  9. WxParse.wxParse('article', 'html', data, this, 5);

模版引用 pages/detail/detail.wxml

  1. <import src="/wxParse/wxParse.wxml"/>
  2. <template is="wxParse" data="{ {wxParseData:article.nodes}}"/>

js修改窗口
https://developers.weixin.qq.com/miniprogram/dev/api/ui/navigation-bar/wx.setNavigationBarTitle.html

五、小程序中的模板语法

https://developers.weixin.qq.com/miniprogram/dev/reference/wxml/template.html

WXML提供模板(template),可以在模板中定义代码片段,然后在不同的地方调用。

定义模板
使用 name 属性,作为模板的名字。然后在内定义代码片段,如:

  1. <!-- index: int msg: string time: string -->
  2. <template name="msgItem">
  3. <view>
  4. <text> {
  5. {index}}: {
  6. {msg}} </text>
  7. <text> Time: {
  8. {time}} </text>
  9. </view>
  10. </template>

使用模板
使用 is 属性,声明需要的使用的模板,然后将模板所需要的 data 传入,如

  1. wxml
  2. <template is="msgItem" data="{ {...item}}"/>
  3. // js
  4. Page({
  5. data: {
  6. item: {
  7. index: 0,
  8. msg: 'this is a template',
  9. time: '2016-09-15'
  10. }
  11. }
  12. })

六、小程序常用api之拍照

1.预览图片

https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.previewImage.html

  1. // pages/home/home.wxml
  2. <image lazy-load="{ {true}}" mode="widthFix" show-menu-by-longpress="{ {true}}" src="{ { 'http://daxun.kuboy.top' + item}}" data-index="index" bindtap="previewImage"></image>
  3. // pages/home/home.js
  4. previewImage (event) {
  5. let arr = []; // 预留空数组
  6. let index = event.currentTarget.dataset.index // 获取当前点击的图片的索引
  7. this.data.bannerlist.map(item => { // 将处理的数据压入数组
  8. arr.push('http://daxun.kuboy.top' + item)
  9. })
  10. console.log(arr)
  11. wx.previewImage({ // 调用预览图片
  12. current: arr[index],
  13. urls: arr
  14. })
  15. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70_pic_center

2.拍照

https://developers.weixin.qq.com/miniprogram/dev/api/media/image/wx.chooseImage.html

wx.chooseImage(Object object)

从本地相册选择图片或使用相机拍照























































属性 类型 默认值 必填 说明
count number 9 最多可以选择的图片张数
sizeType Array.<string> [‘original’, ‘compressed’] 所选的图片的尺寸
sourceType Array.<string> [‘album’, ‘camera’] 选择图片的来源
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)

object.sizeType 的合法值





















说明 最低版本
original 原图
compressed 压缩图

object.sourceType 的合法值





















说明 最低版本
album 从相册选图
camera 使用相机

object.success 回调函数
























属性 类型 说明 最低版本
tempFilePaths Array.<string> 图片的本地临时文件路径列表 (本地路径)
tempFiles Array.<Object> 图片的本地临时文件列表 1.2.0

res.tempFiles 的结构





















属性 类型 说明
path string 本地临时文件路径 (本地路径)
size number 本地临时文件大小,单位 B
  1. <button bindtap="chooseImg">拍照</button>
  2. <image wx:for="{ {img}}" src="{ {item}}"></image>
  3. Page({
  4. /** * 页面的初始数据 */
  5. data: {
  6. img:""
  7. },
  8. //拍照
  9. chooseImg(){
  10. wx.chooseImage({
  11. count: 1,
  12. sizeType: ['original', 'compressed'],
  13. sourceType: ['album', 'camera'],
  14. success:(res)=>{
  15. // tempFilePath可以作为img标签的src属性显示图片
  16. const tempFilePaths = res.tempFilePaths
  17. console.log(tempFilePaths)
  18. this.setData({ img:tempFilePaths})
  19. }
  20. })
  21. }
  22. })

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70_pic_center 1

七、wx.showActionSheet

显示操作菜单
















































属性 类型 默认值 必填 说明
itemList Array.<string> 按钮的文字数组,数组长度最大为 6
itemColor string #000000 按钮的文字颜色
success function 接口调用成功的回调函数
fail function 接口调用失败的回调函数
complete function 接口调用结束的回调函数(调用成功、失败都会执行)
  1. // pages/user/user.wxml
  2. <button bindtap="showActionSheet">操作表</button>
  3. // pages/user/user.js
  4. /** * 打开操作表 模拟真机的拍照 */
  5. showActionSheet () {
  6. wx.showActionSheet({
  7. itemList: ['拍照', '从手机相册选取'],
  8. success(res) {
  9. console.log(res.tapIndex)
  10. switch (res.tapIndex) {
  11. case 0:
  12. console.log('调用拍照')
  13. break;
  14. case 1:
  15. console.log('从手机相册选取')
  16. break;
  17. default:
  18. console.log('选择了其中一个')
  19. }
  20. },
  21. fail () {
  22. console.log('你点击去了取消按钮')
  23. }
  24. })
  25. }

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80Mzk0MTM2NA_size_16_color_FFFFFF_t_70_pic_center 2

发表评论

表情:
评论列表 (有 0 条评论,263人围观)

还没有评论,来说两句吧...

相关阅读

    相关 程序标签

    1. view 这个标签相当于div(它的特点就是在没有其他样式影响的情况下,宽度100%); 2. text 这个标签相当于span(它的特点就是在没有其他样式影响的情况

    相关 程序 - 组件

    > 微信小程序为开发者提供了一系列基础组件,使开发者可以进行快速开发。同时还支持自定义组件,提升代码复用性,有助于代码维护。 一、基础组件 > 基础组件主要分为:视图容