MUI頁面間傳值問題
阿新 • • 發佈:2018-11-01
在使用MUI做APP的時候,很多情況下都需要頁面間通訊傳值,mui提供了一個機制來解決這個問題:自定義事件;
比如在A頁面,需要傳參到B頁面,那麼此時B頁面就是目標介面;
在A頁面:
mui.fire(target,event,data)
在這裡target是需傳值的目標webview
(plus.webview.getWebviewById("頁面id")),event是自定義的事件名,data是一個要傳遞的json格式的資料
在B頁面:
window.addEventListener('customEvent',function(event){ //通過event.detail可獲得傳遞過來的引數內容 .... });
假設如下場景:從新聞列表頁面進入新聞詳情頁面,新聞詳情頁面為共用頁面,通過傳遞新聞ID通知詳情頁面需要顯示具體哪個新聞,詳情頁面再動態向伺服器請求資料,mui要實現類似需求可通過如下步驟實現:
- 在列表頁面中預載入詳情頁面(假設為detail.html)
- 列表頁面在點選新聞標題時,首先,獲得該新聞id,觸發詳情頁面的newsId事件,並將新聞id作為事件引數傳遞過去;然後再開啟詳情頁面;
- 詳情頁面監聽newsId自定義事件
列表頁面程式碼如下:
詳情頁面程式碼如下://初始化預載入詳情頁面 mui.init({ preloadPages:[{ id:'detail.html', url:'detail.html' } ] }); var detailPage = null; //新增列表項的點選事件 mui('.mui-content').on('tap', 'a', function(e) { var id = this.getAttribute('id'); //獲得詳情頁面 if(!detailPage){ detailPage = plus.webview.getWebviewById('detail.html'); } //觸發詳情頁面的newsId事件 mui.fire(detailPage,'newsId',{ id:id }); //開啟詳情頁面 mui.openWindow({ id:'detail.html' }); });
//新增newId自定義事件監聽
window.addEventListener('newsId',function(event){
//獲得事件引數
var id = event.detail.id;
//根據id向伺服器請求新聞詳情
.....
});