⼩程序分享链接onShareAppMessage的具体⽤法onShareAppMessage⽤法:凤凰古城好玩吗
只需要在button标签中加⼊open-type="share",⼩程序ui就会⾃动识别分享链接功能
<button data-name="shareBtn" open-type="share">分享</button>
js中代码如下:
onShareAppMessage: function( options ){
var that = this;
// 设置菜单中的转发按钮触发转发事件时的转发内容
var shareObj = {
title: "转发的标题", // 默认是⼩程序的名称(可以写slogan等)
path: '/pages/share/share', // 默认是当前页⾯,必须是以‘/'开头的完整路径
imageUrl: '', //⾃定义图⽚路径,可以是本地⽂件路径、代码包⽂件路径或者⽹络图⽚路径,⽀持PNG及JPG,不传⼊ imageUrl 则使⽤默认截图。显⽰图⽚长宽⽐是 5:4 success: function(res){
// 转发成功之后的回调
Msg == 'shareAppMessage:ok'){
}
},
如何写好作文 fail: function(){
// 转发失败之后的回调
黄轩个人资料 Msg == 'shareAppMessage:fail cancel'){
// ⽤户取消转发
}else Msg == 'shareAppMessage:fail'){
// 转发失败,其中 detail message 为详细失败信息
}
},
complete: fucntion(){
// 转发结束之后的回调(转发成不成功都会执⾏)
}
};
// 来⾃页⾯内的按钮的转发
if( options.from == 'button' ){
var eData = options.target.dataset;
console.log( eData.id); // shareBtn
// 此处可以修改 shareObj 中的内容
shareObj.path = '/pages/goods/goods?goodId='+eData.id;
}
// 返回shareObj
return shareObj;
}
在实际应⽤中,会碰到这种情况:
⼩程序分享时,需要调⽤⼀个ajax(Promise)请求,然后return ⼀个对象,怎么同步实现?
⽐如:⼩程序分享时会调⽤ onShareAppMessage ⽅法,他会return ⼀个对象作为分享时的参数。但是我需要在他return之前调⽤⼀个ajax ⽅法getShareCode,怎么样同步实现?
//将字符串链接转为⼆维码,如:转换前 itemid/344*fromuser/4909*shopid/75,转换后 KtIQE4j9OP4JNGS2dsZy
什么时候立春2022年的几月份立春getShareCode: function () {
var that = this;
sharecode: 'itemid/' + that.data.productid + '*fromuser/' + BuyerUserId() + '*shopid/' + that.data.shopId
}).then(function (res) {右眼跳是什么意思
if (res.statusCode === 0) {
that.setData({ newShareCode: res.sharedata });
}
});
},
//分享功能
onShareAppMessage: function () {
let that = this;
var newShareCode = wShareCode;
var shareBackUrl = 'pages/goods/goods?scene=' + newShareCode;
return {
title: ds.title,
path: shareBackUrl
}
},
尝试⽤async await 和 Promise都没有得到想要的结果。
不能⽤async await原因是,如果 onShareAppMessage 是async函数,分享时会调⽤这个⽅法,但是分享的事件是⾛的默认的分享,没⽤使⽤
我return的参数对象。Promise同理。
本机的ip地址
⽽且return的对象写到请求⽅法⾥⾯也会出现上⾯的问题:⽅法会被调⽤,但是分享事件没有⽤return的参数。如下:
//分享功能
onShareAppMessage: function () {
var that = this;
sharecode: 'itemid/' + that.data.productid + '*fromuser/' + BuyerUserId() + '*shopid/' + that.data.shopId
}).then(function (res) {
if (res.statusCode === 0) {
var newShareCode = res.sharedata;
var shareBackUrl = 'pages/goods/goods?scene=' + newShareCode;
return {
title: ds.title,
path: shareBackUrl
}
}
});
},
jQuery的ajax请求可以这么设置同步请求:
$.ajaxSetup({
async: false
});
async ⽅法,别⼈调⽤的时候,会⽴刻返回⼀个Promise,⽽return⾥的path,则是在返回的那个getShareCode⾥获取的。调⽤这个⽅法拿的是返回值,也就是⼀个Promise,⽽Promise⾥没有他需要的那些参数,所以就是默认的分享了。
换句话说,这个Share回调不允许有异步操作。能改成同步就改,不能改的话,就得改代码逻辑了。
结果发现这个Share回调还真不允许有异步操作。
曲线救国的⽅法就多了,⽐如:
1、在页⾯加载的时候先请求好数据,存在data⾥
2、写个阻塞的函数
3、封装⾃⼰的分享函数onShareAppMessage实现分享参数的动态获取
到此这篇关于⼩程序分享链接onShareAppMessage的具体⽤法的⽂章就介绍到这了,更多相关⼩程序分享链接onShareAppMessage内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论