diff --git a/packages/uni-cli-shared/components/navigation-bar.vue b/packages/uni-cli-shared/components/navigation-bar.vue index c78bc53acf1dd705f08559135222fe247538613f..bce547cdb43b214a2451b973298e2973fcc1f1e2 100644 --- a/packages/uni-cli-shared/components/navigation-bar.vue +++ b/packages/uni-cli-shared/components/navigation-bar.vue @@ -83,8 +83,9 @@ export default { } }, created () { - const pages = getCurrentPages() + const pages = getCurrentPages() const page = pages[pages.length - 1] + this.__$page = page this.$watch('title', () => { this.setNavigationBarTitle() }) @@ -101,7 +102,7 @@ export default { this.setNavigationBarColor() }) // #ifdef APP-PLUS - this._webview = page.$getAppWebview() + this.__$webview = page.$getAppWebview() attrs.forEach(key => { const titleNView = {} if (this[key] || this[key].length > 0) { @@ -124,14 +125,18 @@ export default { methods: { setNavigationBarTitle () { uni.setNavigationBarTitle({ + __page__: this.__$page, title: this.title }) }, setNavigationBarLoading () { - uni[(this.loading ? 'show' : 'hide') + 'NavigationBarLoading']() + uni[(this.loading ? 'show' : 'hide') + 'NavigationBarLoading']({ + __page__: this.__$page + }) }, setNavigationBarColor () { uni.setNavigationBarColor({ + __page__: this.__$page, frontColor: this.frontColor, backgroundColor: this.backgroundColor, animation: { @@ -141,7 +146,7 @@ export default { }) }, setTitleNView (titleNView) { - const webview = this._webview + const webview = this.__$webview const style = webview.getStyle() if (style && style.titleNView) { webview.setStyle({ diff --git a/src/platforms/app-plus/service/api/ui/navigation-bar.js b/src/platforms/app-plus/service/api/ui/navigation-bar.js index 8c5c9e1bc7f3273a0cf4004006efed061d885a4d..278004851f9a7d535d0f14b759409977e402c9bc 100644 --- a/src/platforms/app-plus/service/api/ui/navigation-bar.js +++ b/src/platforms/app-plus/service/api/ui/navigation-bar.js @@ -1,11 +1,12 @@ import { - getLastWebview + getWebview } from '../util' export function setNavigationBarTitle ({ + __page__, title = '' } = {}) { - const webview = getLastWebview() + const webview = getWebview(__page__) if (webview) { const style = webview.getStyle() if (style && style.titleNView) { @@ -49,11 +50,12 @@ function setPageMeta (statusBarStyle) { pages[pages.length - 1].$page.meta.statusBarStyle = statusBarStyle } -export function setNavigationBarColor ({ +export function setNavigationBarColor ({ + __page__, frontColor, backgroundColor } = {}) { - const webview = getLastWebview() + const webview = getWebview(__page__) if (webview) { const styles = {} if (frontColor) { @@ -85,4 +87,4 @@ export function setNavigationBarColor ({ return { errMsg: 'setNavigationBarColor:fail' } -} +} diff --git a/src/platforms/app-plus/service/api/util.js b/src/platforms/app-plus/service/api/util.js index 0d5a35f0b77490c6f7c3b75ad07b8fe88eaac1aa..64e132d77c31c88bb65ea6281695149a6b025674 100644 --- a/src/platforms/app-plus/service/api/util.js +++ b/src/platforms/app-plus/service/api/util.js @@ -15,6 +15,13 @@ export function callApiSync (api, args, name, alias) { return ret } +export function getWebview (__page__) { + if (__page__) { + return __page__.$getAppWebview() + } + return getLastWebview() +} + export function getLastWebview () { try { const pages = getCurrentPages() @@ -225,4 +232,4 @@ export function getFileName (path) { export function getExtName (path) { const array = path.split('.') return array.length > 1 ? '.' + array[array.length - 1] : '' -} +} diff --git a/src/platforms/h5/service/api/ui/navigation-bar.js b/src/platforms/h5/service/api/ui/navigation-bar.js index 3db4a153fd061306d95c9555a3d85cac67203860..f64fe5e5f7612910c4b91fcac81d9aec4edadd95 100644 --- a/src/platforms/h5/service/api/ui/navigation-bar.js +++ b/src/platforms/h5/service/api/ui/navigation-bar.js @@ -1,8 +1,11 @@ -function setNavigationBar (type, args) { - const pages = getCurrentPages() - if (pages.length) { - const page = pages[pages.length - 1].$holder +import { + isCurrentPage, + getPageHolder +} from '../util.js' +function setNavigationBar (type, args = {}) { + const page = getPageHolder(args.__page__) + if (page) { switch (type) { case 'setNavigationBarColor': { @@ -43,7 +46,9 @@ function setNavigationBar (type, args) { title } = args page.navigationBar.titleText = title - document.title = title + if (isCurrentPage(page)) { // 仅当前页面 + document.title = title + } UniServiceJSBridge.emit('onNavigationBarChange', { titleText: title }) @@ -58,12 +63,12 @@ export function setNavigationBarColor (args) { return setNavigationBar('setNavigationBarColor', args) } -export function showNavigationBarLoading () { - return setNavigationBar('showNavigationBarLoading') +export function showNavigationBarLoading (args) { + return setNavigationBar('showNavigationBarLoading', args) } -export function hideNavigationBarLoading () { - return setNavigationBar('hideNavigationBarLoading') +export function hideNavigationBarLoading (args) { + return setNavigationBar('hideNavigationBarLoading', args) } export function setNavigationBarTitle (args) { diff --git a/src/platforms/h5/service/api/util.js b/src/platforms/h5/service/api/util.js new file mode 100644 index 0000000000000000000000000000000000000000..808ab2bced3c1131f5a7d7e4ad3bcc6aac1fe918 --- /dev/null +++ b/src/platforms/h5/service/api/util.js @@ -0,0 +1,19 @@ +export function getPageHolder (__page__) { + if (__page__) { + return __page__.$holder + } + const pages = getCurrentPages() + const len = pages.length + if (len) { + return pages[len - 1].$holder + } +} + +export function isCurrentPage (pageHolder) { + const pages = getCurrentPages() + const len = pages.length + if (len) { + return pages[len - 1].$holder === pageHolder + } + return false +}