mui.back()僅處理窗口邏輯,若希望在窗口關(guān)閉之前再處理一些其它業(yè)務(wù)邏輯,則可將業(yè)務(wù)邏輯抽象成一個(gè)具體函數(shù),然后注冊(cè)為mui.init方法的beforeback參數(shù);beforeback的執(zhí)行邏輯為:
執(zhí)行beforeback參數(shù)對(duì)應(yīng)的函數(shù)若返回false,則不再執(zhí)行mui.back()方法;
否則(返回true或無(wú)返回值),繼續(xù)執(zhí)行mui.back()方法;
示例:從列表打開詳情頁(yè)面,從詳情頁(yè)面再返回后希望刷新列表界面,此時(shí)可注冊(cè)beforeback參數(shù),然后通過(guò)自定義事件通知列表頁(yè)面刷新數(shù)據(jù),示例代碼如下:
mui.init({
beforeback: function(){
//獲得列表界面的webview
var list = plus.webview.getWebviewById('list');
//觸發(fā)列表界面的自定義事件(refresh),從而進(jìn)行數(shù)據(jù)刷新
mui.fire(list,'refresh');
//返回true,繼續(xù)頁(yè)面關(guān)閉邏輯
return true;
}
});
注意:beforeback的執(zhí)行返回必須是同步的(阻塞模式),若使用nativeUI這種異步j(luò)s(非阻塞模式),則可能會(huì)出現(xiàn)意想不到的結(jié)果;比如:通過(guò)plus.nativeUI.confirm()彈出確認(rèn)框,可能用戶尚未選擇,頁(yè)面已經(jīng)返回了(beforeback同步執(zhí)行完畢,無(wú)返回值,繼續(xù)執(zhí)行mui.back()方法,nativeUI不會(huì)阻塞js進(jìn)程):在這種情況下,若要自定義業(yè)務(wù)邏輯,就需要復(fù)寫mui.back方法了;如下為一個(gè)自定義示例,每次都需要用戶確認(rèn)后,才會(huì)關(guān)閉當(dāng)前頁(yè)面
轉(zhuǎn)自【B5教程網(wǎng)】:http://www.bcty365.com/content-146-2388-1.html原文