From 79e8ed950069697ef380cb89d37771a8de2a9c10 Mon Sep 17 00:00:00 2001 From: fxy060608 Date: Sat, 26 Oct 2019 13:28:36 +0800 Subject: [PATCH] fix(v3): requestComponentInfo(app-plus) --- packages/uni-app-plus/dist/view.umd.js | 31 +++++++++++++++---- .../subscribe/api/request-component-info.js | 26 +++++++++++++--- 2 files changed, 46 insertions(+), 11 deletions(-) diff --git a/packages/uni-app-plus/dist/view.umd.js b/packages/uni-app-plus/dist/view.umd.js index 82149c229..424088408 100644 --- a/packages/uni-app-plus/dist/view.umd.js +++ b/packages/uni-app-plus/dist/view.umd.js @@ -12616,19 +12616,38 @@ function getNodeInfo(el, fields) { return info; } +function findElm(id, vm) { + if (id === vm._$id) { + return vm; + } + + var childVms = vm.$children; + var len = childVms.length; + + for (var i = 0; i < len; i++) { + var childVm = findElm(id, childVms[i]); + + if (childVm) { + return childVm; + } + } +} + function getElm(component, pageVm) { if (!component) { return pageVm.$el; } - if (typeof component === 'string') { - var componentVm = pageVm._$vd.getVm(component); + if (true) { + if (typeof component === 'string') { + var componentVm = findElm(component, pageVm); + + if (!componentVm) { + throw new Error("Not Found\uFF1APage[".concat(pageVm.$page.id, "][").concat(component, "]")); + } - if (!componentVm) { - throw new Error("Not Found\uFF1APage[".concat(pageVm.$page.id, "][").concat(component, "]")); + return componentVm.$el; } - - return componentVm.$el; } return component.$el; diff --git a/src/core/view/bridge/subscribe/api/request-component-info.js b/src/core/view/bridge/subscribe/api/request-component-info.js index 0dc25f08b..772435186 100644 --- a/src/core/view/bridge/subscribe/api/request-component-info.js +++ b/src/core/view/bridge/subscribe/api/request-component-info.js @@ -73,16 +73,32 @@ function getNodeInfo (el, fields) { return info } +function findElm (id, vm) { + if (id === vm._$id) { + return vm + } + const childVms = vm.$children + const len = childVms.length + for (let i = 0; i < len; i++) { + const childVm = findElm(id, childVms[i]) + if (childVm) { + return childVm + } + } +} + function getElm (component, pageVm) { if (!component) { return pageVm.$el } - if (typeof component === 'string') { - const componentVm = pageVm._$vd.getVm(component) - if (!componentVm) { - throw new Error(`Not Found:Page[${pageVm.$page.id}][${component}]`) + if (__PLATFORM__ === 'app-plus') { + if (typeof component === 'string') { + const componentVm = findElm(component, pageVm) + if (!componentVm) { + throw new Error(`Not Found:Page[${pageVm.$page.id}][${component}]`) + } + return componentVm.$el } - return componentVm.$el } return component.$el } -- GitLab