業務場景:
某個工單任務在員工執行過程中需要轉辦工單給他人執行,此時從工單頁跳轉到執行人列表(通訊錄)頁面選擇其他員工執行。
編碼思路:
跳轉到執行人列表頁獲取到選擇的執行人信息;返回上一級同時並帶回選擇執行人數據;
解決方法:
利用uni.$once監聽,執行人列表返回時觸發方法,在工單頁的onShow()周期函數中寫入uni.$once()接受傳回數據。
問題描述:
通過執行人列表的 選擇完畢 按鈕返回無異常,但如果直接通過導航欄的返回不經過選擇按鈕返回工單頁,工單頁onShow()中的uni.$once雖然並沒有被執行,但是其實方法執行次數存在積累,並在后面通過正常的監聽方法(點擊選擇完畢)執行時 一次性執行完畢。
比如 工單頁跳轉到執行人列表選擇頁面,執行人列表通過選擇完畢(方法綁在這個按鈕上)返回上一級,監聽正常。但是如果工單頁跳轉到執行人列表選擇頁面,執行人列表通過導航欄的返回按鈕返回工單頁,雖然once內容沒有執行,但是積累了一次監聽,當我再次進入執行人列表點擊選擇完畢時,這時uni.$once就會一次性直接執行兩次。如果這個里面寫了請求方法,就會發起兩次請求,造成可能的請求報錯與資源浪費。
問題解決:
在執行人列表頁 的生命周期函數onUnload() { uni.$off('op_user'); }中加入uni.$off()關閉監聽即可,即每次關閉頁面都取消監聽。