提交 f6280541 编写于 作者: DCloud-WZF's avatar DCloud-WZF 💬

feat(mp): add initUnknownHooks

上级 c2696d7b
......@@ -69,6 +69,35 @@ export function initHooks (mpOptions, hooks, vueOptions) {
})
}
export function initUnknownHooks (mpOptions, vueOptions, excludes = []) {
findHooks(vueOptions).forEach((hook) => initHook(mpOptions, hook, excludes))
}
function findHooks (vueOptions, hooks = []) {
if (vueOptions) {
Object.keys(vueOptions).forEach((name) => {
if (name.indexOf('on') === 0 && isFn(vueOptions[name])) {
hooks.push(name)
}
})
}
return hooks
}
function initHook (mpOptions, hook, excludes) {
if (excludes.indexOf(hook) === -1 && !hasOwn(mpOptions, hook)) {
mpOptions[hook] = function (args) {
if (
(__PLATFORM__ === 'mp-toutiao' || __PLATFORM__ === 'mp-lark') &&
hook === 'onError'
) {
return getApp().$vm.$callHook(hook, args)
}
return this.$vm && this.$vm.__call_hook(hook, args)
}
}
}
export function initVueComponent (Vue, vueOptions) {
vueOptions = vueOptions.default || vueOptions
let VueComponent
......
......@@ -7,6 +7,7 @@ import {
import {
initData,
initHooks,
initUnknownHooks,
handleEvent,
initBehaviors,
initVueComponent,
......@@ -93,6 +94,7 @@ export default function parsePage (vuePageOptions) {
}
initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions)
if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
......
......@@ -2,6 +2,7 @@ import Vue from 'vue'
import {
initHooks,
initUnknownHooks,
initMocks
} from 'uni-wrapper/util'
......@@ -190,6 +191,7 @@ export default function parseBaseApp (vm, {
initAppLocale(Vue, vm, normalizeLocale(__GLOBAL__.getSystemInfoSync().language) || LOCALE_EN)
initHooks(appOptions, hooks)
initUnknownHooks(appOptions, vm.$options)
return appOptions
}
......@@ -4,6 +4,7 @@ import {
import {
initHooks,
initUnknownHooks,
PAGE_EVENT_HOOKS
} from 'uni-wrapper/util'
......@@ -27,6 +28,7 @@ export default function parseBasePage (vuePageOptions, {
})
initHooks(pageOptions.methods, hooks, vuePageOptions)
initUnknownHooks(pageOptions.methods, vuePageOptions)
pageOptions.methods.onLoad = function (query) {
this.options = query
......@@ -40,4 +42,4 @@ export default function parseBasePage (vuePageOptions, {
}
return pageOptions
}
}
......@@ -7,6 +7,7 @@ import {
import {
initData,
initHooks,
initUnknownHooks,
handleEvent,
initBehaviors,
initVueComponent,
......@@ -80,6 +81,7 @@ export default function parsePage (vuePageOptions) {
}
initHooks(pageOptions, hooks, vuePageOptions)
initUnknownHooks(pageOptions, vuePageOptions)
if (Array.isArray(vueOptions.wxsCallMethods)) {
vueOptions.wxsCallMethods.forEach(callMethod => {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册