From f81a7a619725aa57c48353fca2c21a43fc3b7aee Mon Sep 17 00:00:00 2001 From: Tevin <tingquanren@163.com> Date: Wed, 06 Mar 2024 16:28:54 +0800 Subject: [PATCH] 公共组件库,文档建设开始 --- bases/BridgeCenterBase.js | 66 ++++++++++++++++++++++++++++----- 1 files changed, 56 insertions(+), 10 deletions(-) diff --git a/bases/BridgeCenterBase.js b/bases/BridgeCenterBase.js index a4a8f6e..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]; } - $getCurrentPageUrl() { - return this.$getCurrentPage().path; + /** + * 获取当前页面路径 + * @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,33 +58,66 @@ } } - _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; + } try { res = typeof res === 'string' ? JSON.parse(res) : res; } catch (e) { -- Gitblit v1.9.1