diff --git a/lib/apis.js b/lib/apis.js index dc6fb851f886e164847ed605a6755ce2f5a9a22e..042a2ec8b2b09c08486549d114615d2048a831a4 100644 --- a/lib/apis.js +++ b/lib/apis.js @@ -115,7 +115,7 @@ const device = [ ] const keyboard = [ - 'hideKeyboard', + 'hideKeyboard', 'onKeyboardHeightChange' ] @@ -138,6 +138,7 @@ const ui = [ 'removeTabBarBadge', 'showTabBarRedDot', 'hideTabBarRedDot', + 'onTabBarMidButtonTap', 'setBackgroundColor', 'setBackgroundTextStyle', 'createAnimation', @@ -209,4 +210,4 @@ const apis = [ ...third ] -module.exports = apis +module.exports = apis diff --git a/src/core/runtime/todo.js b/src/core/runtime/todo.js index 1e8d2349b9416fe283ae2a90d1ec2d0de92d1ddc..90cbcb3c4045c36682e01b6ac3311d702ef869a4 100644 --- a/src/core/runtime/todo.js +++ b/src/core/runtime/todo.js @@ -1,10 +1,11 @@ import { isFn -} from 'uni-shared' - +} from 'uni-shared' + const todoApis = Object.create(null) const TODOS = [ + 'onTabBarMidButtonTap', 'subscribePush', 'unsubscribePush', 'onPush', @@ -29,4 +30,4 @@ TODOS.forEach(function (name) { todoApis[name] = createTodoApi(name) }) -export default todoApis +export default todoApis diff --git a/src/core/service/api/ui/tab-bar.js b/src/core/service/api/ui/tab-bar.js index b7728006fbffb4c23be33172acfe8774e518a089..1d6a0d5c155bbc31f1dbbb77d9be4221ba358f84 100644 --- a/src/core/service/api/ui/tab-bar.js +++ b/src/core/service/api/ui/tab-bar.js @@ -1,7 +1,12 @@ import { + onMethod, invokeMethod } from '../../platform' +import { + invoke +} from 'uni-core/service/bridge' + export function removeTabBarBadge ({ index }) { @@ -20,4 +25,16 @@ export function showTabBarRedDot ({ }) } -export const hideTabBarRedDot = removeTabBarBadge +export const hideTabBarRedDot = removeTabBarBadge + +const callbacks = [] + +onMethod('onTabBarMidButtonTap', res => { + callbacks.forEach(callbackId => { + invoke(callbackId, res) + }) +}) + +export function onTabBarMidButtonTap (callbackId) { + callbacks.push(callbackId) +} diff --git a/src/platforms/app-plus/service/framework/tab-bar.js b/src/platforms/app-plus/service/framework/tab-bar.js index 2ef4f351064c9743b3aacdf7d4594051cdf7cac1..6cae39b11f82371984fddccfe7b4eb133bb59589 100644 --- a/src/platforms/app-plus/service/framework/tab-bar.js +++ b/src/platforms/app-plus/service/framework/tab-bar.js @@ -3,6 +3,7 @@ import { } from '../api/util' import { + publish, requireNativePlugin } from '../bridge' @@ -102,6 +103,9 @@ export default { tabBar && tabBar.onClick(({ index }) => { clickCallback(config.list[index], index, true) }) + tabBar && tabBar.onMidButtonClick(() => { + publish('onTabBarMidButtonTap', {}) + }) }, switchTab (page) { const itemLength = config.list.length