diff --git a/src/core/view/plugins/index.js b/src/core/view/plugins/index.js index ee764f3fac502111133f19eba31fd0c8d5720171..64697ebb9f0ad611c3a4af3ac690a2f7be29b708 100644 --- a/src/core/view/plugins/index.js +++ b/src/core/view/plugins/index.js @@ -48,8 +48,8 @@ export default { return $event } - Vue.prototype.$getComponentDescriptor = function (vm, owner = false) { - return createComponentDescriptor(vm || this, owner) + Vue.prototype.$getComponentDescriptor = function (vm) { + return createComponentDescriptor(vm || this) } Vue.prototype.$handleWxsEvent = function ($event) { @@ -57,7 +57,7 @@ export default { const currentTarget = $event.currentTarget const instance = currentTarget && currentTarget.__vue__ && - currentTarget.__vue__.$getComponentDescriptor(null, true) + currentTarget.__vue__.$getComponentDescriptor() $event = processEvent.call(this, $event.type, $event, {}, findUniTarget($event, this.$el) || $event.target, $event.currentTarget) $event.instance = instance diff --git a/src/core/view/plugins/wxs/component-descriptor.js b/src/core/view/plugins/wxs/component-descriptor.js index 118acda7068b16d6855b7659b5687d189b3cc880..304aaa1ee03ee3ea44425a337914099d8fec97da 100644 --- a/src/core/view/plugins/wxs/component-descriptor.js +++ b/src/core/view/plugins/wxs/component-descriptor.js @@ -146,12 +146,15 @@ class ComponentDescriptor { } } -export function createComponentDescriptor (vm, owner = false) { +export function createComponentDescriptor (vm) { + if (vm && vm.$options.name && vm.$options.name.indexOf('VUni') === 0) { + // 内置组件需要使用父 vm + vm = vm.$parent + } if (vm && vm.$el) { - const key = owner ? '__wxsComponentDescriptorOwner' : '__wxsComponentDescriptor' - if (!vm.$el[key]) { - vm.$el[key] = new ComponentDescriptor(vm) + if (!vm.$el.__wxsComponentDescriptor) { + vm.$el.__wxsComponentDescriptor = new ComponentDescriptor(vm) } - return vm.$el[key] + return vm.$el.__wxsComponentDescriptor } }