diff --git a/src/core/view/plugins/wxs/component-descriptor.js b/src/core/view/plugins/wxs/component-descriptor.js index 04d4e4ec50bf79f23bab078a0a80094f574d166f..b75e42b7109e36f24a5ad92fa0052aaa6a2b79bc 100644 --- a/src/core/view/plugins/wxs/component-descriptor.js +++ b/src/core/view/plugins/wxs/component-descriptor.js @@ -137,7 +137,7 @@ class ComponentDescriptor { } callMethod (funcName, args = {}) { - if (this.$vm[funcName]) { + if (funcName in this.$vm) { this.$vm[funcName](JSON.parse(JSON.stringify(args))) } else if (this.$vm._$id) { UniViewJSBridge.publishHandler('onWxsInvokeCallMethod', { @@ -167,10 +167,11 @@ export function createComponentDescriptor (vm, isOwnerInstance = true) { // ownerInstance 内置组件需要使用父 vm vm = vm.$parent } - if (vm && vm.$el) { - if (!vm.$el.__wxsComponentDescriptor) { - vm.$el.__wxsComponentDescriptor = new ComponentDescriptor(vm) + // 改为挂载到 vm 实例,不同 vm 实例的 $el 可能重复 + if (vm) { + if (!('__wxsComponentDescriptor' in vm)) { + vm.__wxsComponentDescriptor = new ComponentDescriptor(vm) } - return vm.$el.__wxsComponentDescriptor + return vm.__wxsComponentDescriptor } -} +}