diff --git a/packages/uni-app-plus-nvue/dist/index.js b/packages/uni-app-plus-nvue/dist/index.js index d6cb18f084be6664d8265858e010fd4a2d90d4bb..4573934c7567a32fefb892e97ac8fea9664a2b14 100644 --- a/packages/uni-app-plus-nvue/dist/index.js +++ b/packages/uni-app-plus-nvue/dist/index.js @@ -161,8 +161,9 @@ var serviceContext = (function () { return false } return page.$page.meta.isTabBar - } - return !!__uniRoutes.find(route => route.path.slice(1) === path) + } + const route = __uniRoutes.find(route => route.path.slice(1) === path); + return route && route.meta.isTabBar } catch (e) { if (process.env.NODE_ENV !== 'production') { console.log('getCurrentPages is not ready'); @@ -1363,7 +1364,6 @@ var serviceContext = (function () { const emit = UniServiceJSBridge.emit; plus.key.addEventListener('backbutton', () => { - // TODO uni? uni.navigateBack({ from: 'backbutton' }); @@ -1383,22 +1383,22 @@ var serviceContext = (function () { isConnected: networkType !== 'none', networkType }); - }); - - plus.globalEvent.addEventListener('KeyboardHeightChange', function (event) { - publish('onKeyboardHeightChange', { - height: event.height - }); - }); - - plus.globalEvent.addEventListener('plusMessage', function (e) { - if (process.env.NODE_ENV !== 'production') { - console.log('UNIAPP[plusMessage]:[' + Date.now() + ']' + JSON.stringify(e.data)); - } - if (e.data && e.data.type) { - const type = e.data.type; - consumePlusMessage(type, e.data.args || {}); - } + }); + + plus.globalEvent.addEventListener('KeyboardHeightChange', function (event) { + publish('onKeyboardHeightChange', { + height: event.height + }); + }); + + plus.globalEvent.addEventListener('plusMessage', function (e) { + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[plusMessage]:[' + Date.now() + ']' + JSON.stringify(e.data)); + } + if (e.data && e.data.type) { + const type = e.data.type; + consumePlusMessage(type, e.data.args || {}); + } }); } @@ -1418,10 +1418,12 @@ var serviceContext = (function () { return } - const currentTab = isTabBarPage(__uniConfig.entryPagePath); - if (currentTab) { + __uniConfig.tabBar.selected = 0; + + const selected = __uniConfig.tabBar.list.findIndex(page => page.pagePath === __uniConfig.entryPagePath); + if (selected !== -1) { // 取当前 tab 索引值 - __uniConfig.tabBar.selected = __uniConfig.tabBar.list.indexOf(currentTab); + __uniConfig.tabBar.selected = selected; // 如果真实的首页与 condition 都是 tabbar,无需启用 realEntryPagePath 机制 if (__uniConfig.realEntryPagePath && isTabBarPage(__uniConfig.realEntryPagePath)) { delete __uniConfig.realEntryPagePath; @@ -1431,7 +1433,12 @@ var serviceContext = (function () { __uniConfig.__ready__ = true; const onLaunchWebviewReady = function onLaunchWebviewReady () { - const tabBarView = tabBar.init(__uniConfig.tabBar, (item) => { + const tabBarView = tabBar.init(__uniConfig.tabBar, (item, index) => { + UniServiceJSBridge.emit('onTabItemTap', { + index, + text: item.text, + pagePath: item.pagePath + }); uni.switchTab({ url: '/' + item.pagePath, openType: 'switchTab', @@ -1452,8 +1459,8 @@ var serviceContext = (function () { console.log(`[uni-app] registerApp`); } - appCtx = appVm; - + appCtx = appVm; + appCtx.globalData = appVm.$options.globalData || {}; initOn(UniServiceJSBridge.on, { @@ -1938,7 +1945,7 @@ var serviceContext = (function () { }; const SYNC_API_RE = - /^\$|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/; + /^\$|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/; const CONTEXT_API_RE = /^create|Manager$/; @@ -4882,7 +4889,7 @@ var serviceContext = (function () { return { errMsg: 'getSystemInfo:ok', - brand: '', + brand: plus.device.vendor, model: plus.device.model, pixelRatio: plus.screen.scale, screenWidth, @@ -8887,16 +8894,28 @@ var serviceContext = (function () { } function navigateBack$1 ({ + from = 'navigateBack', delta, animationType, animationDuration }) { - const pages = getCurrentPages(); - const len = pages.length; + const pages = getCurrentPages(); + + const currentPage = pages[pages.length - 1]; + if ( + currentPage.$vm && + currentPage.$vm.$options.onBackPress && + currentPage.$vm.__call_hook && + currentPage.$vm.__call_hook('onBackPress', { + from + }) + ) { + return + } uni.hideToast(); // 后退时,关闭 toast,loading - pages[len - 1].$page.meta.isQuit + currentPage.$page.meta.isQuit ? quit() : back(delta, animationType, animationDuration); } diff --git a/packages/uni-app-plus-nvue/dist/index.legacy.js b/packages/uni-app-plus-nvue/dist/index.legacy.js index 6365db5cc4433f94e73c3d5fbbd8f27d6ea7e1a1..29b9757b90ee52458b11145e9bd67b7dd973deee 100644 --- a/packages/uni-app-plus-nvue/dist/index.legacy.js +++ b/packages/uni-app-plus-nvue/dist/index.legacy.js @@ -122,7 +122,7 @@ function invokeApi (method, api, options, ...params) { } const SYNC_API_RE = - /^\$|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/; + /^\$|getMenuButtonBoundingClientRect|^report|interceptors|Interceptor$|getSubNVueById|requireNativePlugin|upx2px|hideKeyboard|canIUse|^create|Sync$|Manager$|base64ToArrayBuffer|arrayBufferToBase64/; const CONTEXT_API_RE = /^create|Manager$/; diff --git a/packages/vue-cli-plugin-uni-optimize/package.json b/packages/vue-cli-plugin-uni-optimize/package.json index 3956aeaed26461cd51b90baea316439357cb6cdd..d4978357c97a9b851c564cb2b4278ca5139bb99d 100644 --- a/packages/vue-cli-plugin-uni-optimize/package.json +++ b/packages/vue-cli-plugin-uni-optimize/package.json @@ -8,8 +8,5 @@ }, "author": "fxy060608", "license": "Apache-2.0", - "dependencies": { - "@dcloudio/uni-h5": "^1.0.0-alpha-22120190814002" - }, "gitHead": "08ea04b669e93f0db3acb2dfa38138298edd5789" } diff --git a/src/platforms/app-plus-nvue/service/api/route/navigate-back.js b/src/platforms/app-plus-nvue/service/api/route/navigate-back.js index 50e1d430d3abbd2db85f55bd331121ea88ee4da1..e9ca66fa194fc9986bf6c184e14a36bc043cc458 100644 --- a/src/platforms/app-plus-nvue/service/api/route/navigate-back.js +++ b/src/platforms/app-plus-nvue/service/api/route/navigate-back.js @@ -74,16 +74,28 @@ function back (delta, animationType, animationDuration) { } export function navigateBack ({ + from = 'navigateBack', delta, animationType, animationDuration }) { - const pages = getCurrentPages() - const len = pages.length + const pages = getCurrentPages() + + const currentPage = pages[pages.length - 1] + if ( + currentPage.$vm && + currentPage.$vm.$options.onBackPress && + currentPage.$vm.__call_hook && + currentPage.$vm.__call_hook('onBackPress', { + from + }) + ) { + return + } uni.hideToast() // 后退时,关闭 toast,loading - pages[len - 1].$page.meta.isQuit + currentPage.$page.meta.isQuit ? quit() : back(delta, animationType, animationDuration) } diff --git a/src/platforms/app-plus/service/bridge.js b/src/platforms/app-plus/service/bridge.js index 36edbb50374df06f739b1c14e4db5ecdae650941..0f8db7667577426d9e59c92f8d37bfc9299be9e5 100644 --- a/src/platforms/app-plus/service/bridge.js +++ b/src/platforms/app-plus/service/bridge.js @@ -56,8 +56,9 @@ export function isTabBarPage (path = '') { return false } return page.$page.meta.isTabBar - } - return !!__uniRoutes.find(route => route.path.slice(1) === path) + } + const route = __uniRoutes.find(route => route.path.slice(1) === path) + return route && route.meta.isTabBar } catch (e) { if (process.env.NODE_ENV !== 'production') { console.log('getCurrentPages is not ready') diff --git a/src/platforms/app-plus/service/framework/app.js b/src/platforms/app-plus/service/framework/app.js index 5d211a7eaee888bf518d62afcb3a3d330065bac9..99937234484b0524565db0d93506dbb1f3e20b11 100644 --- a/src/platforms/app-plus/service/framework/app.js +++ b/src/platforms/app-plus/service/framework/app.js @@ -9,7 +9,7 @@ import { } from './page' import { - registerPlusMessage, + registerPlusMessage, consumePlusMessage } from './plus-message' @@ -17,8 +17,8 @@ import { isTabBarPage } from '../api/util' -import tabBar from './tab-bar' - +import tabBar from './tab-bar' + import { publish } from '../bridge' @@ -43,7 +43,6 @@ function initGlobalListeners () { const emit = UniServiceJSBridge.emit plus.key.addEventListener('backbutton', () => { - // TODO uni? uni.navigateBack({ from: 'backbutton' }) @@ -63,22 +62,22 @@ function initGlobalListeners () { isConnected: networkType !== 'none', networkType }) - }) - - plus.globalEvent.addEventListener('KeyboardHeightChange', function (event) { - publish('onKeyboardHeightChange', { - height: event.height - }) - }) - - plus.globalEvent.addEventListener('plusMessage', function (e) { - if (process.env.NODE_ENV !== 'production') { - console.log('UNIAPP[plusMessage]:[' + Date.now() + ']' + JSON.stringify(e.data)) - } - if (e.data && e.data.type) { - const type = e.data.type - consumePlusMessage(type, e.data.args || {}) - } + }) + + plus.globalEvent.addEventListener('KeyboardHeightChange', function (event) { + publish('onKeyboardHeightChange', { + height: event.height + }) + }) + + plus.globalEvent.addEventListener('plusMessage', function (e) { + if (process.env.NODE_ENV !== 'production') { + console.log('UNIAPP[plusMessage]:[' + Date.now() + ']' + JSON.stringify(e.data)) + } + if (e.data && e.data.type) { + const type = e.data.type + consumePlusMessage(type, e.data.args || {}) + } }) } @@ -98,10 +97,12 @@ function initTabBar () { return } - const currentTab = isTabBarPage(__uniConfig.entryPagePath) - if (currentTab) { + __uniConfig.tabBar.selected = 0 + + const selected = __uniConfig.tabBar.list.findIndex(page => page.pagePath === __uniConfig.entryPagePath) + if (selected !== -1) { // 取当前 tab 索引值 - __uniConfig.tabBar.selected = __uniConfig.tabBar.list.indexOf(currentTab) + __uniConfig.tabBar.selected = selected // 如果真实的首页与 condition 都是 tabbar,无需启用 realEntryPagePath 机制 if (__uniConfig.realEntryPagePath && isTabBarPage(__uniConfig.realEntryPagePath)) { delete __uniConfig.realEntryPagePath @@ -111,7 +112,12 @@ function initTabBar () { __uniConfig.__ready__ = true const onLaunchWebviewReady = function onLaunchWebviewReady () { - const tabBarView = tabBar.init(__uniConfig.tabBar, (item) => { + const tabBarView = tabBar.init(__uniConfig.tabBar, (item, index) => { + UniServiceJSBridge.emit('onTabItemTap', { + index, + text: item.text, + pagePath: item.pagePath + }) uni.switchTab({ url: '/' + item.pagePath, openType: 'switchTab', @@ -132,8 +138,8 @@ export function registerApp (appVm) { console.log(`[uni-app] registerApp`) } - appCtx = appVm - + appCtx = appVm + appCtx.globalData = appVm.$options.globalData || {} initOn(UniServiceJSBridge.on, {