From 4f4f226d8c6214c8225cd93d2136f370a74577ef Mon Sep 17 00:00:00 2001 From: Book Pauk Date: Sun, 11 Dec 2022 14:22:39 +0700 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=B4=D0=B5=D1=80=D0=B6?= =?UTF-8?q?=D0=BA=D0=B0=20=D0=BD=D0=B0=D1=81=D0=BB=D0=B5=D0=B4=D0=BE=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=BE?= =?UTF-8?q?=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/components/vueComponent.js | 39 +++++++++++++++++++------------ 1 file changed, 24 insertions(+), 15 deletions(-) diff --git a/client/components/vueComponent.js b/client/components/vueComponent.js index 67f8c2e5..3d4f11b4 100644 --- a/client/components/vueComponent.js +++ b/client/components/vueComponent.js @@ -17,7 +17,7 @@ export default function(componentClass) { } } } else if (prop === '_props') { - comp['props'] = obj[prop]; + comp.props = obj[prop]; } } else {//usual prop data[prop] = obj[prop]; @@ -26,23 +26,32 @@ export default function(componentClass) { comp.data = () => _.cloneDeep(data); //methods - const classProto = Object.getPrototypeOf(obj); - const classMethods = Object.getOwnPropertyNames(classProto); const methods = {}; const computed = {}; - for (const method of classMethods) { - const desc = Object.getOwnPropertyDescriptor(classProto, method); - if (desc.get) {//has getter, computed - computed[method] = {get: desc.get}; - if (desc.set) - computed[method].set = desc.set; - } else if ( ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated',//life cycle hooks - 'deactivated', 'beforeUnmount', 'unmounted', 'errorCaptured', 'renderTracked', 'renderTriggered',//life cycle hooks - 'setup'].includes(method) ) { - comp[method] = obj[method]; - } else if (method !== 'constructor') {//usual - methods[method] = obj[method]; + + let classProto = Object.getPrototypeOf(obj); + while (classProto) { + const classMethods = Object.getOwnPropertyNames(classProto); + for (const method of classMethods) { + const desc = Object.getOwnPropertyDescriptor(classProto, method); + if (desc.get) {//has getter, computed + if (!computed[method]) { + computed[method] = {get: desc.get}; + if (desc.set) + computed[method].set = desc.set; + } + } else if ( ['beforeCreate', 'created', 'beforeMount', 'mounted', 'beforeUpdate', 'updated', 'activated', + 'deactivated', 'beforeUnmount', 'unmounted', 'errorCaptured', 'renderTracked', 'renderTriggered', + 'setup'].includes(method) ) {//life cycle hooks + if (!comp[method]) + comp[method] = obj[method]; + } else if (method !== 'constructor') {//usual + if (!methods[method]) + methods[method] = obj[method]; + } } + + classProto = Object.getPrototypeOf(classProto); } comp.methods = methods; comp.computed = computed;