微信小程序相关问题

一、跳转到客服界面的时候实现发送相关产品链接

heml

<button class="submitButton freeSubmit" open-type="contact" 
      send-message-title="车辆详情"
      send-message-path="{{'/SubPackages/sellingPages/pages/car-detail/car-detail?id='+car.id}}"
      send-message-img="{{car.cover[0]}}"
      show-message-card="true"
      session-from="车辆详情">
    在线咨询
  </button>

1、open-type="contact"这里实现的是,点击这个按钮就会跳转到与客服对话的界面;

2、send-message-title=“service.title”:会话内消息卡片标题,open-type="contact"时有效;

3、send-message-path=“service.path”:会话内消息卡片点击跳转小程序路径,open-type="contact"时有效;

4、send-message-img=“service.img”:会话内消息卡片图片,open-type="contact"时有效;

5、show-message-card=“true”:是否显示会话内消息卡片,设置此参数为 true,用户进入客服会话会在右下角显示"可能要发送的小程序"提示,用户点击后可以快速发送小程序消息,open-type="contact"时有效,这个要设置为true才会在会话界面看到链接;

6、session-from=“service.content”:会话来源,open-type="contact"时有效;

二、跳转到打电话界面和判断手机系统

直接用wx.makePhoneCall安卓系统会没有任何提醒,直接跳转到呼叫界面,但是如果是苹果系统的话,就会弹出一个提示框,确认跳转才会跳转。所以为了兼容两种系统,在跳转到打电话的界面前,我们先判断一下手机的系统,如果是苹果系统就直接调用wx.makePhoneCall,如果是安卓系统就调用wx.showModal弹出提示框。
代码如下:

 const phone=this.data.phone
      const textShow='是否呼叫'+phone
      //操作系统及版本
    var xitong_iOS = wx.getSystemInfoSync().system.indexOf('iOS');//判断是否是iOS,返回0
    var xitong_android = wx.getSystemInfoSync().system.indexOf('Android');//判断是否是Android,返回0
    if (xitong_iOS==0) {
      wx.makePhoneCall({
        phoneNumber: phone 
      })
    }else{
      wx.showModal({
              title: '',
              content: textShow,
              success: res => {
                if (res.confirm) {
                  // 跳转设置页面
                  wx.makePhoneCall({
                    phoneNumber: phone 
                  })
                }else{}
              }
            })
    }

三、文本展开、收起

html:

<view class="textBoxBg" style="height: {{!fold?198+textHightNum:null}}rpx;">
        <view class="textBox" style="height:{{!fold?198+textHightNum:null}}rpx;">
          <view wx:if="{{!car.overview || !car.overview.length}}"  class="noTextStyle">
            暂无
          </view>
          <block wx:else>
            <view id="frame" class='frame {{fold == false ? "nofold":""}}'>
              <text id="content" class="textStyle "	auto-height>{{car.overview}} </text>
            </view>
            
            <view class="btn" bindtap="changeShow" wx:if="{{isShow}}">{{fold ? '展开':'收起'}}</view>
          </block>
        </view>
      	
      </view>

代码说明:
1、fold是用来判断内容是否太长,是则将内容折叠,并在左下角显示“展开”

css:

.textBoxBg{
  width: 649rpx;
  height: 198rpx;
  border-radius: 24rpx;
  background: #121212;
  font-size: 28rpx;
  font-family: PingFangSC-Regular, PingFang SC;
  font-weight: 400;
  color: rgba(255,255,255,0.8300);
  line-height: 40rpx;
  margin: 19rpx 0 0 28rpx;
}
.textBox{
  width: 649rpx;
  height: 198rpx;
  border-radius: 24rpx;
  background: rgb(148 102 44 / 10%);
}
.noTextStyle{
  padding: 24rpx 0 0 28rpx;
}
.frame {
  width: 96%;
  max-height: 206rpx;
  display: -webkit-box;
  overflow: hidden;
  text-overflow: ellipsis;
  word-wrap: break-word;
  white-space: normal !important;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  padding: 28rpx 0 0 20rpx;
}
.btn{
  padding: 10rpx 0 0 576rpx;
  color: #FF9A1C;
}
.textStyle{
  padding: 0 0 0 28rpx;
}

代码说明:
1、display: -webkit-box; 必须结合的属性 ,将对象作为弹性伸缩盒子模型显示 ;
2、text-overflow,在多行文本的情况下,用省略号“…”隐藏超出范围的文本 ;
3.-webkit-box-orient 必须结合的属性 ,设置或检索伸缩盒对象的子元素的排列方式 ,vertical为垂直;
4、-webkit-line-clamp,限制在一个块元素显示的文本的行数,这个属性必须要结合上面3个属性来实现。

四、返回上一页或指定页

	var pages = getCurrentPages();
    var currPage = pages[pages.length - 1]; //当前页面
    var prevPage = pages[pages.length - 4]; //粗略评估页
    prevPage.setData({
      brandData
    });
    wx.navigateBack({
      delta: 3
    })

代码说明:
1、getCurrentPages():获取当前的页面栈,决定需要返回几层;
2、wx.navigateBack:返回指定的页面,delta放数字几就是往后返回几页。

五、使用scroll-view时上下滑卡顿

我把里面的高度去掉就不卡顿了

六、wx.reLaunch和wx.redirectTo

wx.reLaunch:关闭所有页面,打开到应用内的某个页面。wx.redirectTo:关闭当前页面,跳转到应用内的某个页面,但是不允许跳转到 tabbar 页面。
这两个api都有一个url放需要跳转的应用内非 tabBar 的页面的路径 (代码包路径), 路径后可以带参数。参数与路径之间使用 ? 分隔,参数键与参数值用 = 相连,不同参数用 & 分隔;如 ‘path?key=value&key2=value2’。

问题:不管你传的值是数字还是数组还是字符串,这两个api都会把传的值变成字符串。
解决传值后,值从数组变成字符串方法:
1、在传值界面的用JSON.stringify()来进行数组序列优化,如:const value = JSON.stringify(value);,再将value进行传值;在接收值界面,用JSON.parse()将接受到的值进行解析恢复。但是,如果要传的数值中有特殊字符,就会导致解析失败,当用该方法后报错,就可以改用下面方法二进行传值;
2、将要传的值用wx.setStorageSync()存进缓存,再要用该数据的界面用wx.wx.getStorageSync()从缓冲中取出。具体存取方法可参考微信小程序官网

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Bonny雨曦

码字不易,多多鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值