微信小程序6 - 頁面之間傳參及通知系統封裝

1. 簡單傳參git

wx.navigateTo({
url: '/pages/demo/index/index?id=1'
})
/pages/demo/index/index.js 中
onLoad(options){
var id = options.id; //獲取經過url參數傳遞來的參數
}
 
2. 複雜傳參
var json = JSON.stringify({a:1});
wx.navigateTo({
url: '/pages/demo/index/index?json='+ json
})
/pages/demo/index/index.js 中
onLoad(options){
var json = JSON.parse(options.json); //獲取經過url參數傳遞來的參數 , 反解爲json對象
}
 
3.
  1 寫入storage
  2 寫入app.globalData
  3 寫入 其餘自定義的全局容器內
以上123點均可以實現數據的傳輸.都是方式之一
 
4. 通知系統進行 數據傳輸
  對於大數據量的傳輸.這個過程可能會涉及到數據量,解析反解性能,或特殊字符等因素的干擾.
  以上1,2,3介紹的傳輸方式,只針對頁面跳轉前進有效,對於頁面後退 如: 選擇城市,選擇日期等控件型頁面,處理則要麻煩一些. 引入通知系統,則要方便許多
 
Notification 通知系統, 代碼來自github 作了一些擴展. 所謂的通知,也可叫 訂閱-發佈模式, 觀察者模式 ....
即 有一個全局的通知模塊,接收 訂閱消息者,接收定向發佈消息者.消息發送過來,會檢查有沒有訂閱這個消息的人,有則主動推送消息給對方(具體爲某個頁面)
 
原始代碼見:
github地址: https://github.com/icindy/WxNotificationCenter
 
咱們封裝並擴展了這個邏輯 , 編碼
使用 self. addNotifyListener("訂閱名稱");       註冊訂閱者 -- 訂閱頁面調用
使用 self.onNotify(data消息傳輸的數據,"訂閱名稱")   處理消息   -- 訂閱頁面處理
使用  self.removeNotifyListener("訂閱名稱")      移除消息訂閱 -- 訂閱頁面處理, 通常 不須要手工調用, 在 擴展Page參數一章中的處理,已經封裝了消息的銷燬邏輯
 
使用 self. postNotify ("訂閱名稱",data消息傳輸的數據)  發佈消息 -- 發佈頁面調用 (和訂閱頁面能夠是同一個,通常都是最後打開的控件頁面,好比 城市選擇控件)
 
 
控件使用通知傳遞消息,能夠見 pages/selectCity/index.js pages/datepicker/datepicker/index.js 引用頁面, 主頁->當即定製
 
 
封裝後:
每一個Page打開,都會註冊一個 當前route.url 爲名稱的監聽
Page Onload時,會首先判斷有沒有給本身的 消息,有則直接處理
Page OnUnload時,會銷燬全部本頁面的監聽
相關文章
相關標籤/搜索