From 6eadba871818ec96052da86d3389529c2fa5b1f9 Mon Sep 17 00:00:00 2001 From: zhoutingshuai Date: Thu, 25 Feb 2021 18:03:38 +0800 Subject: [PATCH] fix: apack lose parents-child props, issues#553 --- src/view/component.js | 2 +- src/view/parse-component-template.js | 21 ++++++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/view/component.js b/src/view/component.js index 71eca19eb..dda2db6bb 100644 --- a/src/view/component.js +++ b/src/view/component.js @@ -111,7 +111,7 @@ function Component(options) { // eslint-disable-line if (!proto.hasOwnProperty('aNode')) { var aPack = clazz.aPack || proto.hasOwnProperty('aPack') && proto.aPack; if (aPack) { - proto.aNode = unpackANode(aPack); + proto.aNode = parseComponentTemplate(clazz, unpackANode(aPack)); clazz.aPack = proto.aPack = null; } else { diff --git a/src/view/parse-component-template.js b/src/view/parse-component-template.js index e6a0deae9..970c1b476 100644 --- a/src/view/parse-component-template.js +++ b/src/view/parse-component-template.js @@ -20,16 +20,19 @@ var createAccessor = require('../parser/create-accessor'); * @param {Function} ComponentClass 组件类 * @return {ANode} */ -function parseComponentTemplate(ComponentClass) { +function parseComponentTemplate(ComponentClass, tplANode) { var proto = ComponentClass.prototype; - - - var tplANode = parseTemplate(ComponentClass.template || proto.template, { - trimWhitespace: proto.trimWhitespace || ComponentClass.trimWhitespace, - delimiters: proto.delimiters || ComponentClass.delimiters - }); - - var aNode = tplANode.children[0]; + var aNode; + + if (!tplANode) { + tplANode = parseTemplate(ComponentClass.template || proto.template, { + trimWhitespace: proto.trimWhitespace || ComponentClass.trimWhitespace, + delimiters: proto.delimiters || ComponentClass.delimiters + }); + aNode = tplANode.children[0]; + } else { + aNode = tplANode; + } if (aNode && aNode.textExpr) { aNode = null; }