From f1940982ff006c4eed35750e7506f4663e06e295 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Thu, 10 Oct 2019 20:14:50 +0800 Subject: [PATCH] fix(wxs): ownerInstance --- src/core/view/plugins/index.js | 6 +++--- src/core/view/plugins/wxs/component-descriptor.js | 13 ++++++++----- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/core/view/plugins/index.js b/src/core/view/plugins/index.js index ee764f3fa..64697ebb9 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 118acda70..304aaa1ee 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 } } -- GitLab