用戶開發應用中會大量使用事件功能。除了瀏覽器內置的事件及mui框架內置的事件(比如手勢事件)外,mui同時支持用戶觸發和綁定自定義事件。通過自定義事件,用戶可以輕松實現頁面間數據傳遞。
監聽自定義事件
添加自定義事件監聽操作和標準js事件監聽類似,可直接通過window對象添加,如下:
window.addEventListener('customEvent',function(event){
//通過event.detail可獲得傳遞過來的參數內容
....
});
觸發自定義事件
通過mui.fire方法可觸發目標窗口的自定義事件:
mui.fire(targetPage,'customEvent',{
//自定義事件參數
});
示例:假設如下場景:從新聞列表頁面進入新聞詳情頁面,新聞詳情頁面為共用頁面,通過傳遞新聞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向服務器請求新聞詳情
.....
});
新聞熱點
疑難解答