From a5355c38114640c5e54863ba14a1de6485ed38c0 Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Mon, 05 Jun 2023 20:36:22 +0800 Subject: [PATCH] Merge branch 'master' of ssh://dev.zhiheiot.com:29418/mob-components --- bases/BridgeCenterBase.js | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 51 insertions(+), 8 deletions(-) diff --git a/bases/BridgeCenterBase.js b/bases/BridgeCenterBase.js index 118676f..746a4e8 100644 --- a/bases/BridgeCenterBase.js +++ b/bases/BridgeCenterBase.js @@ -26,15 +26,28 @@ }); } + /** + * 获取当前页面 + * @return {Taro.Page} + */ $getCurrentPage() { const pages = Taro.getCurrentPages(); return pages[pages.length - 1]; } + /** + * 获取当前页面路径 + * @return {String} + */ $getCurrentPagePath() { return this.$getCurrentPage().path.split('?')[0]; } + /** + * 判断地址是否为当前页面 + * @param {String} url + * @return {Taro.Page|null} + */ $isCurrentPage(url) { const pages = Taro.getCurrentPages(); const curPage = pages[pages.length - 1]; @@ -45,32 +58,62 @@ } } - _checkPage(url, callback) { + /** + * 判断当前页面是否在列表中 + * @param {Array} allows=[] + * @return {boolean} + */ + $isCurPageInside(allows = []) { + const url = this.$getCurrentPagePath(); + return allows.indexOf(url) >= 0; + } + + _waitCurPage(url, callback) { let curPage = this.$isCurrentPage(url); if (curPage) { callback(curPage); } else { setTimeout(() => { - this._checkPage(url, callback); + this._waitCurPage(url, callback); }, 100); } } + /** + * 打开指定页面 + * @param {String} url + * @param {Function} callback + */ $openPage(url, callback) { const curPage = this.$isCurrentPage(url); // 需打开的是当前页面 if (curPage) { callback(curPage); } else { - Taro.navigateTo({ - url, - success: () => { - this._checkPage(url, callback); - }, - }); + Taro.navigateTo({ url }); + setTimeout(() => { + this._waitCurPage(url, callback); + }, 100); } } + /** + * 当前页下发通讯 + * @param {String} method + * @param {Object} res + * @param {Function} [callback] + */ + $curPageBridge(method, res, callback) { + this.$pageBridge(this.$getCurrentPage(), method, res, callback); + } + + /** + * 对某个页面下发通知 + * @param {Taro.Page} page + * @param {String} method + * @param {Object} res + * @param {Function} [callback] + */ $pageBridge(page, method, res, callback) { if (!page.$component || !page.$component.$onBridge) { return; -- Gitblit v1.9.1