小程序开发复盘疑难杂症

邵悌
• 阅读 1164

小程序调用地图导航

注意:经纬度必须是浮点数

  addressClick: function (e) {
    let address = e.currentTarget.dataset.item;
    let latitude = parseFloat(this.data.pageData.latitude);
    let longitude = parseFloat(this.data.pageData.longitude);
    wx.getLocation({
      type: 'wgs84',
      success: function (res) {
        wx.openLocation({//​使用微信内置地图查看位置。     
          latitude: latitude,//要去的纬度-地址
          longitude: longitude,//要去的经度-地址
          name: address,
          address: address
        })
      }
    })


  },

携带参数返回上一页,上一页不刷新

场景:选择优惠券,返回下单页
注意:下单页接收参数,必须写在onshow

   //优惠券页面,把参数带回上一页
    goToDetail: function (e) {
        let pages = getCurrentPages();
        let prevPage = pages[pages.length - 2];  
        prevPage.setData({
            ticketCardId: this.data.activeItem,   
            ticketType: this.data.type
        })
        wx.navigateBack({
            delta: 1 
        })
    },

    //下单页,接收优惠券页面携带的参数
    onShow: function () {
      let that = this;
      var pages = getCurrentPages();
      var currPage = pages[pages.length - 1];
      that.setData({
        ticketCardId: currPage.data.ticketCardId,
        ticketPrice: currPage.data.ticketPrice
      });
  },

小程序保存图片

  saveCard: function () {
    var that = this;
    let url = that.data.card_url;
    wx.downloadFile({
      url: url,     //仅为示例,并非真实的资源
      success: function (res) {
        // 只要服务器有响应数据,就会把响应内容写入文件并进入 success 回调,业务需要自行判断是否下载到了想要的内容
        if (res.statusCode === 200) {
          wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success(res) {
              that.setData({
                shareShow: false
              })
              wx.showToast({
                title: '保存图片成功!',
              })
            },
            fail(res) {
              wx.showToast({
                title: '保存图片失败!',
              })
            }
          })
        }
      }
    })
  },

识别二维码进入页面,后端生成的二维码携带参数

场景:后端生成二维码,前端解析
测试方法:微信开发者工具,菜单栏点击普通编译,最底下有个通过二维码编译选项
注意:这个是我看到别人的答案照搬到项目里,写这里是为了下次参考用的,但找不到原链接,如果找到会附上,或者侵删,非常感谢原作者!!!

   //二维码携带参数的格式
   `
    https:/url?invite_code=123&channel_code=333
   `
   
   //扫码进入页面解析
  onLoad: function (options) {
    // 如果是扫码进入,要解析sence,转成对象,再绑定再options上
    Object.assign(options, this.getScene(options.scene)) // 获取二维码参数,绑定在当前this.options对象上
    this.setData({
      inviteCode: options.invite_code ? options.invite_code : '',
      channelCode: options.channel_code ? options.channel_code : '',
    });
    
  getScene: function(scene = "") {
    if (scene == "") return {}
    let res = {}
    let params = decodeURIComponent(scene).split("&")
    params.forEach(item => {
      let pram = item.split("=")
      res[pram[0]] = pram[1]
    })
    return res
  },
}
  

小程序富文本解析

用WxParse插件,虽然停止维护了,但好用,文档写得很清楚,直接看文档吧~感谢开发者~
https://github.com/icindy/wxP...


小程序,选择器

wxml代码

      <view class='l sort_show'>
        <view class='sort_index '>
          <view class="sort_index_flex" bindtap='switchType' data-type='all'>
            <image src='../../assets/image/px.png'></image>
            <text class='f-24 ' style="color:#bfbfbf">按{{nowType.value}}</text>
          </view>
        </view>
        <picker class="sort_picker" bindchange="bindTypeChange" value="{{typeIndex}}" range="{{typeArray}}" range-key="value">
          <view class="picker type_select">
            <text class='f-24 flex-fill'>{{typeArray[typeIndex]}}</text>
            <text class='iconfont iconsanjiaoxing c-6 f-24'></text>
          </view>
        </picker>
      </view>

wxss代码

.sort_show {
  position: relative;
  width: 235.3rpx;
  height: 78rpx;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sort_index {
  width: 235.3rpx;
  height: 78rpx;
  background-color: #3f3f3f;
  border-radius: 37.7rpx;
  font-size: 24.7rpx;
  color: #bfbfbf;
  position: absolute;
  top: 0;
  left: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
}
.sort_index_flex {
  display: flex;
  align-items: center;
  justify-content: center;
}
.sort_index image {
  margin-right: 18.7rpx;
  width: 29.3rpx;
  height: 29.3rpx;
}

.sort_picker {
  position: absolute;
  left: 0;
  top: 0;
  width: 235.3rpx;
  height: 78rpx;
  z-index: 10;
  opacity: 0;
}

js

//data初始化代码
data:{
    nowType: { id: 1, value: '组局进度' },
    typeArray: [ { id: 1, value: '距离' }, { id: 2, value: '回头率' },  { id: 3, value: '价格' }],
}
//js
bindTypeChange: function (e) {
    let type = this.data.typeArray[e.detail.value]
    this.setData({
      order: type.id,
      nowType: type
    });
    //重新请求接口
    this.getHomeData();
  },

小程序加减控件

参考了这个链接的https://blog.csdn.net/iCrazyT...,感谢原作者


小程序弹窗

  <view class='mask_view {{popShow?"show":"hide"}}'>
    <view class='mask_view {{popShow?"show":"hide"}}' bindtap="ClosePop"></view>
    <view class="card">
     弹窗内容内容内容
      <view class='btn' bindtap="inviteClick">邀请好友</view>
    </view>
  </view>

wxss


.mask_view {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: rgba(0, 0, 0, 0.7);
  flex-direction: column;
  justify-content: center;
  align-items: center;
  z-index: 999;
}


.card {
  position: fixed;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 604rpx;
  height: 869.3rpx;
  background-color: #ffffff;
  box-shadow: 0rpx 0rpx 46.2rpx 2.5rpx rgba(0, 0, 0, 0.08);
  border-radius: 24rpx;
  z-index: 1999;
}

js

data:{
    popShow:false
}
//打开弹窗 bindtap="openPop"
 openPop: function () {
    this.setData({
      popShow: true
    })
  },
//关闭弹窗
   ClosePop: function () {
    this.setData({
      popShow: false
    })
  },
  

小程序带周几(星期几)的日期选择器插件

https://github.com/FernwehNan...

最后:感谢互联网,感谢分享者~嘿嘿嘿

点赞
收藏
评论区
推荐文章
小森森 小森森
2年前
计划助手V1.0-微信小程序(QQ小程序)-源代码分享
疫情期间在家感觉好无聊啊,于是利用空闲时间做了一个用来记录和管理小目标时间的小程序,命名为《小沙漏》。QQ版本小程序同步上线,QQ小程序叫《时间小沙漏》,欢迎大家前来体验,后期也会添加其他的新功能哦【区别】:微信小程序的代码与QQ小程序的源码是不一样的。微信小程序的源码基于微信小程序云开发,需要在有网络的情况下使用,具有同步功能,所有记录在删除小
胡哥有话说 胡哥有话说
4年前
微信小程序支付功能全流程实践
前言微信小程序为电商类小程序,提供了非常完善、优秀、安全的支付功能。在小程序内可调用微信的API完成支付功能,方便、快捷。小程序开发者在开发小程序时,支付流程是必然要接触到,今天胡哥就小程序支付的全流程为大家一一细说,让小伙伴能快速得掌握小程序支付能力,避免踩坑!知己知彼,方能百战不殆小程序支付流程图小程序支付交互流程图(https:/
梦
4年前
微信小程序new Date()转换时间异常问题
微信小程序苹果手机页面上显示时间异常,安卓机正常问题image(https://imghelloworld.osscnbeijing.aliyuncs.com/imgs/b691e1230e2f15efbd81fe11ef734d4f.png)错误代码vardate'2021030617:00:00'vardateT
马丁路德 马丁路德
4年前
推荐几个微信小程序开发小技巧
前段时间在下开发了个微信小程序,开发过程中总结了一些我觉得对我有用的小技巧,提炼出来,相当于一个总结复盘,也希望可以帮助到大家。如果对大家确实有帮助,别忘了点赞哦🌟~1\.开发中可能遇到的坑以及Tips本来想写个小技巧的,结果我总结了一堆坑,没上手之前完全想象不到微信小程序的开发体验是如此之差、如此之烂,从微信
Easter79 Easter79
3年前
Taro小程序自定义顶部导航栏
微信自带的顶部导航栏是无法支持自定义icon和增加元素的,在开发小程序的时候自带的根本满足不了需求,分享一个封装好的组件,支持自定义icon、扩展dom,适配安卓、ios、h5,全面屏。我用的是京东的Taro多端编译框架写的小程序,原生的也可以适用,用到的微信/taro的api做调整就行,实现效果如下。!在这里插入图片描述(https://i
Stella981 Stella981
3年前
Servlet概述
一、Servlet概述1.sun公司提供的动态web资源开发技术。本质是上一段java小程序,要求这个小程序必须实现Servlet接口,以便服务器能够调用。2.开发Servlet的两个步骤实验:Servlet的快速入门(1)步骤一:写一个java程序实现Servlet接口(此处直接继承了默认
Wesley13 Wesley13
3年前
TGC小程序
有幸参与了今年腾讯游戏嘉联华(即TGC),现场出现了一个挺奇特的小程序。!(https://oscimg.oschina.net/oscnet/5ebee1c03cf4440b873207ab3d703900.png)它是服务于线下的,主要服务于2017年腾讯游戏嘉年华现场展区的卡片收集活动。!(https://oscimg.os
Wesley13 Wesley13
3年前
MFC小程序
1.将菜单栏归零,工具栏放在窗口低部,加载自己新建的工具栏CMainFrame::OnCreate()函数中thisSetMenu(0);!(https://oscimg.oschina.net/oscnet/b2b7b3a47d6852fe59f293dd27f8a4bb976.jpg)2.将窗口初始化为最大化APP类中:m\_p
邵悌
邵悌
Lv1
我打算爱你很久,没有想要放弃的念头。
文章
4
粉丝
0
获赞
0