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

怎么理解wx.navigateTo的events參數(shù)使用詳情

 更新時(shí)間:2020年05月18日 11:56:41   作者:Felix  
這篇文章主要介紹了怎么理解wx.navigateTo的events參數(shù)使用詳情,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

遇到一個(gè)這樣的業(yè)務(wù)需求, 用戶點(diǎn)擊提現(xiàn)按鈕, 跳轉(zhuǎn)到提現(xiàn)處理結(jié)果頁(yè)面, 為了避免提現(xiàn)請(qǐng)求被重復(fù)提交, 所以需要在用戶點(diǎn)擊了提交按鈕以后就把按鈕鎖起來(lái)不給用戶提交, 在拿到請(qǐng)求結(jié)果以后再把按鈕打開(kāi)
先看界面


再看實(shí)現(xiàn)邏輯

onWithdraw () {
 console.log('加鎖', this.data.isWithdrawing)
 if (this.data.isWithdrawing) return
 // isWithdrawing要在data中初始化為false
 this.data.isWithdrawing = true
 console.log('按照預(yù)期, 這里在跳轉(zhuǎn)之前應(yīng)該只執(zhí)行一次', this.data.isWithdrawing)

 req.redpack.withdraw(this.data.withDrawAmount, this.data.currentCardId)
  .then(res => {
   // 請(qǐng)求參數(shù)不用看, 是封裝的方法
   if (res.code === 201) {
    this.data.isWithdrawing = true
    wx.navigateTo({
     url: '/pages/redpack/withdrawResult/withdrawResult'
    })
   }  
  })
}

于是我輸入金額, 瘋狂的點(diǎn)擊按鈕, 看到的是這樣的



難道應(yīng)該把this.data.isWithdrawing = true放在 wx.navigateTo后?于是測(cè)試, 無(wú)果(有興趣的同學(xué)可以試試)

于是, 我打開(kāi)了微信官方文檔


噢...我懂了, this.data.isWithdrawing = true應(yīng)該放在complete回調(diào)里去支持, 于是我把代碼改成這樣:


測(cè)試


額......

由此我推斷, complete回調(diào)是在頁(yè)面跳轉(zhuǎn)前執(zhí)行的, 跳轉(zhuǎn)前把鎖解開(kāi), 然后我手速又比較快, 所以才出現(xiàn)了多次執(zhí)行的情況, 那究竟要怎么處理呢?

再次翻閱文檔, 一個(gè)event參數(shù)吸引了我, 但是官方寫(xiě)得有點(diǎn)模糊, 于是自己進(jìn)行了代碼的測(cè)試, 下面將我的理解分享給大家, 我喜歡用圖形來(lái)表達(dá), 請(qǐng)看圖:


重點(diǎn)重點(diǎn)重點(diǎn):

1) eventChannel是頁(yè)面跳轉(zhuǎn)時(shí)產(chǎn)生的一個(gè)獨(dú)立于頁(yè)面外的對(duì)象, 父頁(yè)面和子頁(yè)面都可以在eventChannel里面定義方法, 而eventChannel里面的方法在某種意義上是可以操作兩個(gè)頁(yè)面的數(shù)據(jù)的
2) 父頁(yè)面通過(guò)events參數(shù)定義父方法一, 父方法二...
3) 子頁(yè)面通過(guò)this.getOpenerEventChannel()拿到eventChannel對(duì)象, 并且通過(guò)eventChannel.on來(lái)定義子方法一, 子方法二...
4) 父頁(yè)面通過(guò)success或者complete里面的res拿到eventChannel對(duì)象, 并通過(guò)res.eventChannel.emit來(lái)觸發(fā)子頁(yè)面通過(guò)eventChannel.on定義的方法
5) 子頁(yè)面通過(guò)this.getOpenerEventChannel()拿到eventChannel對(duì)象執(zhí)行emit來(lái)觸發(fā)父頁(yè)面定義的方法
6) 最后, 我所說(shuō)的父方法, 子方法, 其實(shí)都是定義在eventChannel上的, 這樣說(shuō)只是方便大家理解, 父頁(yè)面應(yīng)該也也是可以通過(guò)emit去觸發(fā)自己在events里面定義的方法的, 但是這樣沒(méi)有意義, 所以, 我就不做測(cè)試了,因?yàn)闆](méi)有人會(huì)傻到自己跟自己通信吧, 哈哈哈...

再回到我們一開(kāi)始的業(yè)務(wù)需求:
我們是不是可以這樣操作, 在子頁(yè)面顯示的以后再去把父頁(yè)面的鎖打開(kāi)呢?這樣不就避免了重復(fù)提交的問(wèn)題了嗎?(當(dāng)然有人會(huì)問(wèn)我, 你為什么搞得這么復(fù)雜?直接鎖死不就好了嗎?但是你是夠考慮到這樣一種情況, 用戶在提現(xiàn)以后, 又點(diǎn)擊了后退頁(yè)面, 再次進(jìn)行提現(xiàn), 這樣你的鎖還開(kāi)著, 第二不就不能提現(xiàn)了嗎?)
好了, 下面我們來(lái)實(shí)現(xiàn)代碼
父頁(yè)面:


子頁(yè)面:


結(jié)果:


點(diǎn)返回, 再次提現(xiàn)


妥妥的....

到此這篇關(guān)于怎么理解wx.navigateTo的events參數(shù)使用詳情的文章就介紹到這了,更多相關(guān)wx.navigateTo的events參數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 前端開(kāi)發(fā)TypeScript入門基礎(chǔ)教程

    前端開(kāi)發(fā)TypeScript入門基礎(chǔ)教程

    這篇文章主要為大家介紹了前端開(kāi)發(fā)TypeScript的入門基礎(chǔ)教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02
  • 第二篇Bootstrap起步

    第二篇Bootstrap起步

    這篇文章主要介紹了第二篇Bootstrap起步的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 微信小程序報(bào)錯(cuò): thirdScriptError的錯(cuò)誤問(wèn)題

    微信小程序報(bào)錯(cuò): thirdScriptError的錯(cuò)誤問(wèn)題

    這篇文章主要介紹了微信小程序報(bào)錯(cuò): thirdScriptError,本文給大家分享解決方法,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • 從延遲處理解析JavaScript惰性編程

    從延遲處理解析JavaScript惰性編程

    這篇文章主要為大家介紹了從延遲處理解析JavaScript惰性編程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • js實(shí)現(xiàn)開(kāi)關(guān)燈效果

    js實(shí)現(xiàn)開(kāi)關(guān)燈效果

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)開(kāi)關(guān)燈效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-10-10
  • jquery插件bootstrapValidator數(shù)據(jù)驗(yàn)證詳解

    jquery插件bootstrapValidator數(shù)據(jù)驗(yàn)證詳解

    這篇文章主要為大家詳細(xì)介紹了jquery插件bootstrapValidator數(shù)據(jù)驗(yàn)證使用教程,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • javascript中CheckBox全選終極方案

    javascript中CheckBox全選終極方案

    在javascript頁(yè)面中實(shí)現(xiàn)CheckBox或者Radio的選中狀態(tài)是一件很容易的事情,下面我們來(lái)給大家展示下在asp.net中使用javascript中CheckBox全選終極方案,有需要的小伙伴可以參考下。
    2015-05-05
  • 詳解TypeScript中模塊化開(kāi)發(fā)指南

    詳解TypeScript中模塊化開(kāi)發(fā)指南

    在編程中,模塊是指將相關(guān)的代碼封裝在一起,形成一個(gè)獨(dú)立的單元,在這篇文章中,我們將深入探討在TypeScript中如何定義、導(dǎo)入和導(dǎo)出模塊,感興趣的可以了解一下
    2023-06-06
  • javascript基于prototype實(shí)現(xiàn)類似OOP繼承的方法

    javascript基于prototype實(shí)現(xiàn)類似OOP繼承的方法

    這篇文章主要介紹了javascript基于prototype實(shí)現(xiàn)類似OOP繼承的方法,實(shí)例分析了JavaScript使用prototype實(shí)現(xiàn)面向?qū)ο蟪绦蛟O(shè)計(jì)的中類繼承的相關(guān)技巧,需要的朋友可以參考下
    2015-12-12
  • 關(guān)于在LayUI中使用AJAX提交巨坑記錄

    關(guān)于在LayUI中使用AJAX提交巨坑記錄

    今天小編就為大家分享一篇關(guān)于在LayUI中使用AJAX提交巨坑記錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-10-10

最新評(píng)論

阜阳市| 黄平县| 朔州市| 宜宾县| 民乐县| 泰顺县| 尤溪县| 定远县| 化隆| 慈溪市| 长顺县| 肥乡县| 云南省| 浦北县| 亳州市| 西丰县| 大同市| 鹿泉市| 沙坪坝区| 虞城县| 遂宁市| 墨江| 天柱县| 麦盖提县| 常州市| 鄂尔多斯市| 广南县| 临沂市| 象州县| 米林县| 北碚区| 白玉县| 罗甸县| 唐河县| 敦化市| 边坝县| 大邑县| 平利县| 庐江县| 中江县| 湘乡市|