最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

小程序分享鏈接onShareAppMessage的具體用法

 更新時(shí)間:2020年05月22日 11:06:53   作者:半馬  
這篇文章主要介紹了小程序分享鏈接onShareAppMessage的具體用法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

onShareAppMessage用法:

只需要在button標(biāo)簽中加入open-type="share",小程序ui就會(huì)自動(dòng)識(shí)別分享鏈接功能

<button data-name="shareBtn" open-type="share">分享</button>

js中代碼如下:

onShareAppMessage: function( options ){
  var that = this;
  // 設(shè)置菜單中的轉(zhuǎn)發(fā)按鈕觸發(fā)轉(zhuǎn)發(fā)事件時(shí)的轉(zhuǎn)發(fā)內(nèi)容
  var shareObj = {
    title: "轉(zhuǎn)發(fā)的標(biāo)題",    // 默認(rèn)是小程序的名稱(可以寫slogan等)
    path: '/pages/share/share',    // 默認(rèn)是當(dāng)前頁面,必須是以‘/'開頭的完整路徑
    imageUrl: '',   //自定義圖片路徑,可以是本地文件路徑、代碼包文件路徑或者網(wǎng)絡(luò)圖片路徑,支持PNG及JPG,不傳入 imageUrl 則使用默認(rèn)截圖。顯示圖片長寬比是 5:4
    success: function(res){
      // 轉(zhuǎn)發(fā)成功之后的回調(diào)
      if(res.errMsg == 'shareAppMessage:ok'){
      }
    },
    fail: function(){
      // 轉(zhuǎn)發(fā)失敗之后的回調(diào)
      if(res.errMsg == 'shareAppMessage:fail cancel'){
        // 用戶取消轉(zhuǎn)發(fā)
      }else if(res.errMsg == 'shareAppMessage:fail'){
        // 轉(zhuǎn)發(fā)失敗,其中 detail message 為詳細(xì)失敗信息
      }
    },
    complete: fucntion(){
      // 轉(zhuǎn)發(fā)結(jié)束之后的回調(diào)(轉(zhuǎn)發(fā)成不成功都會(huì)執(zhí)行)
    }
  };
  // 來自頁面內(nèi)的按鈕的轉(zhuǎn)發(fā)
  if( options.from == 'button' ){
    var eData = options.target.dataset;
    console.log( eData.id);   // shareBtn
    // 此處可以修改 shareObj 中的內(nèi)容
    shareObj.path = '/pages/goods/goods?goodId='+eData.id;
  }
  // 返回shareObj
  return shareObj;
}

在實(shí)際應(yīng)用中,會(huì)碰到這種情況:

微信小程序分享時(shí),需要調(diào)用一個(gè)ajax(Promise)請求,然后return 一個(gè)對象,怎么同步實(shí)現(xiàn)?

比如:微信小程序分享時(shí)會(huì)調(diào)用 onShareAppMessage 方法,他會(huì)return 一個(gè)對象作為分享時(shí)的參數(shù)。但是我需要在他return之前調(diào)用一個(gè)ajax方法getShareCode,怎么樣同步實(shí)現(xiàn)?

//將字符串鏈接轉(zhuǎn)為二維碼,如:轉(zhuǎn)換前 itemid/344*fromuser/4909*shopid/75,轉(zhuǎn)換后 KtIQE4j9OP4JNGS2dsZy
getShareCode: function () {
  var that = this;
  util.request(api.CreateShareCode, {
   sharecode: 'itemid/' + that.data.productid + '*fromuser/' + user.getBuyerUserId() + '*shopid/' + that.data.shopId
  }).then(function (res) {

   if (res.statusCode === 0) {
    that.setData({ newShareCode: res.sharedata });
   }
  });
 },

 //分享功能
 onShareAppMessage: function () {
  this.getShareCode();
  let that = this;
  var newShareCode = that.data.newShareCode;
  var shareBackUrl = 'pages/goods/goods?scene=' + newShareCode;
  return {
   title: that.data.goods.title,
   path: shareBackUrl
  }
 },

嘗試用async await 和 Promise都沒有得到想要的結(jié)果。

不能用async await原因是, 如果 onShareAppMessage 是async函數(shù),分享時(shí)會(huì)調(diào)用這個(gè)方法,但是分享的事件是走的默認(rèn)的分享,沒用使用我return的參數(shù)對象。Promise同理。

而且return的對象寫到請求方法里面也會(huì)出現(xiàn)上面的問題:方法會(huì)被調(diào)用,但是分享事件沒有用return的參數(shù)。如下:

//分享功能
 onShareAppMessage: function () {
  var that = this;
  util.request(api.CreateShareCode, {
   sharecode: 'itemid/' + that.data.productid + '*fromuser/' + user.getBuyerUserId() + '*shopid/' + that.data.shopId
  }).then(function (res) {

   if (res.statusCode === 0) {
      var newShareCode = res.sharedata;
      var shareBackUrl = 'pages/goods/goods?scene=' + newShareCode;
      return {
       title: that.data.goods.title,
       path: shareBackUrl
      }
   }
  });
 },  

jQuery的ajax請求可以這么設(shè)置同步請求:

$.ajaxSetup({
  async: false
});

async 方法,別人調(diào)用的時(shí)候,會(huì)立刻返回一個(gè)Promise,而return里的path,則是在返回的那個(gè)getShareCode里獲取的。微信調(diào)用這個(gè)方法拿的是返回值,也就是一個(gè)Promise,而Promise里沒有他需要的那些參數(shù),所以就是默認(rèn)的分享了。
換句話說,這個(gè)Share回調(diào)不允許有異步操作。能改成同步就改,不能改的話,就得改代碼邏輯了。

結(jié)果發(fā)現(xiàn)這個(gè)Share回調(diào)還真不允許有異步操作。

曲線救國的方法就多了,比如:

1、在頁面加載的時(shí)候先請求好數(shù)據(jù),存在data里

2、寫個(gè)阻塞的函數(shù)

3、封裝自己的分享函數(shù)onShareAppMessage實(shí)現(xiàn)分享參數(shù)的動(dòng)態(tài)獲取

到此這篇關(guān)于小程序分享鏈接onShareAppMessage的具體用法的文章就介紹到這了,更多相關(guān)小程序分享鏈接onShareAppMessage內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • js實(shí)現(xiàn)延遲加載的幾種方法

    js實(shí)現(xiàn)延遲加載的幾種方法

    本篇文章主要介紹了js實(shí)現(xiàn)延遲加載的幾種方法,js的延遲加載有助與提高頁面的加載速度,主要介紹了3種方法,有興趣的可以了解一下
    2017-04-04
  • JS多次請求接口按順序依次執(zhí)行解決辦法

    JS多次請求接口按順序依次執(zhí)行解決辦法

    在JavaScript中for循環(huán)是同步的,意味著每個(gè)循環(huán)都會(huì)等待前一個(gè)循環(huán)的請求完成后才會(huì)執(zhí)行下一個(gè)循環(huán),這篇文章主要給大家介紹了關(guān)于JS多次請求接口按順序依次執(zhí)行的解決辦法,需要的朋友可以參考下
    2024-04-04
  • 淺談ES6 模板字符串的具體使用方法

    淺談ES6 模板字符串的具體使用方法

    本篇文章主要介紹了淺談ES6 模板字符串的具體使用方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • 微信APP生命周期及頁面生命周期示例詳解

    微信APP生命周期及頁面生命周期示例詳解

    這篇文章主要為大家介紹了微信APP生命周期及頁面生命周期當(dāng)然示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步早日升職加薪
    2022-04-04
  • Javascript編程中幾種繼承方式比較分析

    Javascript編程中幾種繼承方式比較分析

    這篇文章主要介紹了Javascript編程中幾種繼承方式比較分析,較為詳細(xì)的分析了JavaScript繼承的原理并對比分析了幾種繼承方式的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2015-11-11
  • 詳解js的六大數(shù)據(jù)類型

    詳解js的六大數(shù)據(jù)類型

    js中有六種數(shù)據(jù)類型,包括五種基本數(shù)據(jù)類型(Number,String,Boolean,Null,Undefined),和一種混合數(shù)據(jù)類型(Object)。下面就跟著小編一起來看下吧
    2016-12-12
  • 詳解JavaScript閉包的優(yōu)缺點(diǎn)和作用

    詳解JavaScript閉包的優(yōu)缺點(diǎn)和作用

    閉包是指在 JavaScript 中,內(nèi)部函數(shù)可以訪問其外部函數(shù)作用域中的變量,即使外部函數(shù)已經(jīng)執(zhí)行完畢,這種特性被稱為閉包,本文將給大家介紹一下JavaScript閉包的優(yōu)缺點(diǎn)和作用,需要的朋友可以參考下
    2023-09-09
  • wx-charts 微信小程序圖表插件的具體使用

    wx-charts 微信小程序圖表插件的具體使用

    這篇文章主要介紹了wx-charts 微信小程序圖表插件的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • javascript跨域總結(jié)之window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸

    javascript跨域總結(jié)之window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸

    本文給大家介紹window.name實(shí)現(xiàn)的跨域數(shù)據(jù)傳輸,自己親自實(shí)踐了一下,真的非常好用,特此分享到腳本之家網(wǎng)站供大家參考
    2015-11-11
  • javascript hashtable 修正版 下載

    javascript hashtable 修正版 下載

    javascript hashtable 修正版 hashtable hashset 下載,需要的朋友可以收藏下。
    2010-12-12

最新評論

武汉市| 彩票| 东兰县| 晋州市| 霍邱县| 托克逊县| 太保市| 宁南县| 建昌县| 涿州市| 新宁县| 淳安县| 新田县| 青田县| 龙陵县| 水富县| 白沙| 博兴县| 巴楚县| 福建省| 平安县| 开阳县| 彩票| 抚顺县| 南靖县| 平湖市| 于都县| 茂名市| 新和县| 梁河县| 金沙县| 简阳市| 红安县| 中江县| 长宁县| 宜兴市| 苏尼特左旗| 鄂托克前旗| 德惠市| 航空| 镇坪县|