这里写目录标题
一、跳转到客服界面的时候实现发送相关产品链接
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()从缓冲中取出。具体存取方法可参考微信小程序官网