小程序模板網(wǎng)

小程序不同頁(yè)面之間通訊的解決方案

發(fā)布時(shí)間:2018-12-14 08:44 所屬欄目:小程序開(kāi)發(fā)教程
 
小程序做開(kāi)發(fā)的時(shí)候難免需要不同頁(yè)面之間的通訊,比如首頁(yè)打開(kāi)新的頁(yè)面搜索獲取結(jié)果返回到首頁(yè),不同tab頁(yè)面之間的數(shù)據(jù)交互等等。于是做了以下總結(jié)
 
當(dāng)前頁(yè)面打開(kāi)新的頁(yè)面
打開(kāi)新的頁(yè)面可以通過(guò) navigator 組件來(lái)實(shí)現(xiàn),通過(guò)url傳參來(lái)實(shí)現(xiàn),例如
 
<navigator url="../search/search?id=123" open-type="redirect">搜索</navigator>
在新的頁(yè)面 onLoad 事件可以拿到傳過(guò)來(lái)的參數(shù) options
 
onLoad: function(options) {
  console.log(options.id);
}
新的頁(yè)面回傳數(shù)據(jù)到當(dāng)前頁(yè)面
在當(dāng)前頁(yè)面定義一個(gè)方法
 
searchRet(results) {
  console.log(results);
}
在搜索頁(yè)面獲取到的結(jié)果,由于小程序頁(yè)面是通過(guò)棧來(lái)存儲(chǔ)的,所以可以通過(guò) getCurrentPages() 獲取獲取當(dāng)前頁(yè)面棧的實(shí)例,第一個(gè)元素為首頁(yè),最后一個(gè)元素為當(dāng)前頁(yè)面
 
let pages = getCurrentPages();
let homePage = pages[pages.length - 2];
if (homePage) {
  homePage.searchRet(results);
}
生命周期和storage
通過(guò) wx.setStorageSync() 方法可以在本地存儲(chǔ)數(shù)據(jù),在 page 的 onShow 回調(diào)里獲取 storage 的值后做相應(yīng)的處理,例如
 
// index.js
wx.setStorageSync('refresh', true);
 
// mycenter.js
if (wx.getStorageSync('refresh')) {
  // 做更新操作
  wx.removeStorageSync('refresh');
}
storage 也可以用 globalData 來(lái)代替,原理一樣,這里不做展開(kāi),兩種辦法都可行,但是就是太笨了,場(chǎng)景復(fù)雜起來(lái)沒(méi)法搞


易優(yōu)小程序(企業(yè)版)+靈活api+前后代碼開(kāi)源 碼云倉(cāng)庫(kù):starfork
本文地址:http://m.u-renovate.com/wxmini/doc/course/25016.html 復(fù)制鏈接 如需定制請(qǐng)聯(lián)系易優(yōu)客服咨詢:800182392 點(diǎn)擊咨詢
QQ在線咨詢
AI智能客服 ×