Open
Description
Version
2.6.10
Reproduction link
https://jsfiddle.net/vuetest/c5uw870y/3/
Steps to reproduce
1、click jsfiddle link
2、you will see result is {{msg}},is incorrect
What is expected?
render template tag as html element, dom looks like that:
<div>
<p>
<template>
#document-fragment
<span>{{msg}}</span>
</template>
</p>
</div>
What is actually happening?
template tag disappeared
<div>
<p>
<span>{{msg}}</span>
</p>
</div>
when v-pre used at the staticRoot, template render correctly, fixed by #8146. see this also: https://jsfiddle.net/vuetest/c5uw870y/5/
when v-pre does not used at the staticRoot, template tag will be skip, source code in vue/src/compiler/codegen/index.js
is:
export function genElement (el: ASTElement, state: CodegenState): string {
// ...
} else if (el.tag === 'template' && !el.slotTarget && !state.pre) {
// template tag run into here, directively render it's children instead of him
return genChildren(el, state) || 'void 0'
} // ...
how to slove this problem:
export function genElement (el: ASTElement, state: CodegenState): string {
if (el.parent) {
el.pre = el.pre || el.parent.pre;
// add this line
state.pre = el.pre;
}
I'm not familiar with creating pr with test, someone else can help me?